1 defmodule Pleroma.Web.PleromaAPI.PleromaAPI do
6 alias Pleroma.Pagination
7 alias Pleroma.SubscriptionNotification
9 def get_subscription_notifications(user, params \\ %{}) do
10 options = cast_params(params)
13 |> SubscriptionNotification.for_user_query(options)
14 |> restrict(:exclude_types, options)
15 |> Pagination.fetch_paginated(params)
18 defp cast_params(params) do
20 exclude_types: {:array, :string},
25 changeset = cast({%{}, param_types}, params, Map.keys(param_types))
29 defp restrict(query, :exclude_types, %{exclude_types: mastodon_types = [_ | _]}) do
32 |> Enum.map(&Activity.from_mastodon_notification_type/1)
36 |> where([q, a], not fragment("? @> ARRAY[?->>'type']::varchar[]", ^ap_types, a.data))
39 defp restrict(query, _, _), do: query