defmodule Pleroma.Activity do
use Ecto.Schema
- alias Pleroma.Repo
alias Pleroma.Activity
alias Pleroma.Notification
+ alias Pleroma.Repo
import Ecto.Query
def get_in_reply_to_activity(_), do: nil
+ def delete_by_ap_id(id) when is_binary(id) do
+ by_object_ap_id(id)
+ |> Repo.delete_all(returning: true)
+ |> elem(1)
+ |> Enum.find(fn
+ %{data: %{"type" => "Create", "object" => %{"id" => ap_id}}} -> ap_id == id
+ _ -> nil
+ end)
+ end
+
+ def delete_by_ap_id(_), do: nil
+
for {ap_type, type} <- @mastodon_notification_types do
def mastodon_notification_type(%Activity{data: %{"type" => unquote(ap_type)}}),
do: unquote(type)
end
def mastodon_notification_type(%Activity{}), do: nil
+
+ def all_by_actor_and_id(actor, status_ids \\ [])
+ def all_by_actor_and_id(_actor, []), do: []
+
+ def all_by_actor_and_id(actor, status_ids) do
+ Activity
+ |> where([s], s.id in ^status_ids)
+ |> where([s], s.actor == ^actor)
+ |> Repo.all()
+ end
end