EpochtalkServerWeb.Helpers.Pagination (epochtalk_server v0.1.0)

Helper for paginating database queries

Link to this section Summary

Functions

Takes in a query, page and per_page option, returns paginated data and relevant pagination data for frontend (ex. page, limit, next, prev)

Link to this section Functions

Link to this function

page_simple(query, page, list)

@spec page_simple(query :: Ecto.Queryable.t(), page :: integer() | String.t() | nil, [
  {:per_page, integer() | String.t() | nil}
]) :: {:ok, list :: [term()] | [], pagination_data :: map()}

Takes in a query, page and per_page option, returns paginated data and relevant pagination data for frontend (ex. page, limit, next, prev)

example

Example

iex> import Ecto.Query
iex> alias EpochtalkServer.Models.{ Mention, Invitation }
iex> alias EpochtalkServerWeb.Helpers.Pagination
iex> Mention
...> |> order_by(asc: :id)
...> |> Pagination.page_simple(1, per_page: 25)
{:ok, [], %{limit: 25, next: false, page: 1, prev: false}}
iex> Invitation
...> |> order_by(desc: :email)
...> |> Pagination.page_simple(1, per_page: 10)
{:ok, [], %{limit: 10, next: false, page: 1, prev: false}}