ecto_paging v0.8.4 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.Paging.Repo # This string adds
paginate/2
method. 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_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
paginate
struct withhas_more
andsize
counts (TODO: add this helpers). - When both
starting_after
andending_before
is set, onlystarting_after
is used.
Link to this section Summary
Functions
This struct defines pagination rules. It can be used in your response API
Convert map into Ecto.Paging
struct
Build a %Ecto.Paging{}
struct to fetch next page results based on previous Ecto.Repo.all
result
and previous paging struct
Apply pagination to a Ecto.Query
.
It can accept either Ecto.Paging
struct or map that can be converted to it via from_map/1
Convert Ecto.Paging
struct into map and drop all nil values and cursors
property if it’s empty
Link to this section Types
t() :: %{limit: number, cursors: Ecto.Paging.Cursors.t, has_more: number, size: number}
Link to this section Functions
This struct defines pagination rules. It can be used in your response API.
Convert map into Ecto.Paging
struct.
Build a %Ecto.Paging{}
struct to fetch next page results based on previous Ecto.Repo.all
result
and previous paging struct.
Apply pagination to a Ecto.Query
.
It can accept either Ecto.Paging
struct or map that can be converted to it via from_map/1
.
Convert Ecto.Paging
struct into map and drop all nil values and cursors
property if it’s empty.