clacks/lib/clacks/paginator.ex

27 lines
515 B
Elixir

defmodule Clacks.Paginator do
import Ecto.Query
def paginate(query, %{"max_id" => max_id}) do
query
|> where([a], a.id < ^max_id)
|> order_by(desc: :id)
end
def paginate(query, %{"since_id" => since_id}) do
query
|> where([a], a.id > ^since_id)
|> order_by(desc: :id)
end
def paginate(query, %{"min_id" => min_id}) do
query
|> where([a], a.id > ^min_id)
|> order_by(asc: :id)
end
def paginate(query, _params) do
query
|> order_by(desc: :id)
end
end