Ecto.Paging
This module provides a easy way to apply cursor-based pagination to your Ecto Queries.
Usage:
Add macro to your repo
defmodule MyRepo do use Ecto.Repo, otp_app: :my_app use Ecto.Pagging.Repo # This string adds
paginate/2method. endPaginate!
query = from p in Ecto.Paging.Schema
query |> Ecto.Paging.TestRepo.paginate(%Ecto.Paging{limit: 150}) |> Ecto.Paging.TestRepo.all
Limitations:
-
Right now it works only with schemas that have
:inserted_atfield 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
paginatestruct withhas_moreandsizecounts (TODO: add this helpers). -
When both
starting_afterandending_beforeis set, onlystarting_afteris used.
Installation
-
Add
ecto_pagingto your list of dependencies inmix.exs:
```elixir
def deps do
[{:ecto_paging, "~> 0.2.0"}]
end
```-
Ensure
ecto_pagingis started before your application:
```elixir
def application do
[applications: [:ecto_paging]]
end
```