1 defmodule Pleroma.Web.MastodonAPI.MastodonAPI do
10 def get_followers(user, params \\ %{}) do
12 |> User.get_followers_query()
17 def get_friends(user, params \\ %{}) do
19 |> User.get_friends_query()
24 def paginate(query, params \\ %{}) do
25 options = cast_params(params)
28 |> restrict(:max_id, options)
29 |> restrict(:since_id, options)
30 |> restrict(:limit, options)
31 |> order_by([u], fragment("? desc nulls last", u.id))
34 def cast_params(params) do
41 changeset = cast({%{}, param_types}, params, Map.keys(param_types))
45 defp restrict(query, :max_id, %{max_id: max_id}) do
47 |> where([q], q.id < ^max_id)
50 defp restrict(query, :since_id, %{since_id: since_id}) do
52 |> where([q], q.id > ^since_id)
55 defp restrict(query, :limit, options) do
56 limit = Map.get(options, :limit, @default_limit)
62 defp restrict(query, _, _), do: query