This module provides a easy way to apply cursor-based pagination to your Ecto Queries.
-
Add macro to your repo
defmodule MyRepo do use Ecto.Repo, otp_app: :my_app use Ecto.Paging.Repo # This string adds `paginate/2` and `page/3` methods. end
-
Paginate!
query = from p in Ecto.Paging.Schema {res, next_paging} = query |> Ecto.Paging.TestRepo.page(%Ecto.Paging{limit: 150})
- Right now it works only with schemas that have
:inserted_at
field with auto-generated value. - You need to be careful with order-by's in your queries, since this feature is not tested yet.
- It doesn't construct
has_more
andsize
counts inpaginate
struct (TODO: add this helpers). - When both
starting_after
andending_before
is set, onlystarting_after
is used.
- Add
ecto_paging
to your list of dependencies inmix.exs
:
```elixir
def deps do
[{:ecto_paging, "~> 0.8.4"}]
end
```
-
Ensure
ecto_paging
is started before your application:def application do [applications: [:ecto_paging]] end