+ @max_limit 40
+ @page_keys ["max_id", "min_id", "limit", "since_id", "order"]
+
+ def page_keys, do: @page_keys
+
+ @spec fetch_paginated(Ecto.Query.t(), map(), type(), atom() | nil) :: [Ecto.Schema.t()]
+ def fetch_paginated(query, params, type \\ :keyset, table_binding \\ nil)
+
+ def fetch_paginated(query, %{total: true} = params, :keyset, table_binding) do
+ total = Repo.aggregate(query, :count, :id)