blob: 225c41f45c00166419fc9ebff4ebc91e4473d425 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
defmodule Chessh.SSH.Client.Selector do
import Ecto.Query
alias Chessh.Repo
def paginate_ish_query(query, current_id, direction) do
sorted_query =
if direction == :desc,
do: from(g in query, order_by: [desc: g.id]),
else: from(g in query, order_by: [asc: g.id])
results =
if !is_nil(current_id) do
if direction == :desc,
do: from(g in sorted_query, where: g.id < ^current_id),
else: from(g in sorted_query, where: g.id > ^current_id)
else
sorted_query
end
|> Repo.all()
if direction == :desc, do: results, else: Enum.reverse(results)
end
end
|