defmodule CoreUtils.PaginationHelper do @moduledoc """ Utilities for query pagination """ import Ecto.Query @doc """ Implements simple pagination Returns query with limit and offset ## Examples iex> CoreUtils.PaginationHelper.set_pagination(query, limit, page) query """ def set_pagination(query, lim, page) when lim >= 0 and page > 0 do page = page - 1 offst = lim * page query |> limit(^lim) |> offset(^offst) end def set_pagination(query, lim, _) when lim >= 0 do query |> limit(^lim) end def set_pagination(query, _, _), do: query end