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/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.
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.