aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/activity/queries.ex
diff options
context:
space:
mode:
authorEgor Kislitsyn <egor@kislitsyn.com>2019-09-03 21:58:30 +0700
committerEgor Kislitsyn <egor@kislitsyn.com>2019-09-13 12:44:59 +0700
commit39dc9b470c7ad8348a13f181039f11d14a42fa2b (patch)
tree1bfaa3d1af3872ec83801385a59046b1f27c7549 /lib/pleroma/activity/queries.ex
parent5ca643b80de6e8b82ccb2411b1fa1259a8d565ae (diff)
downloadpleroma-39dc9b470c7ad8348a13f181039f11d14a42fa2b.tar.gz
Cleanup Pleroma.Activity and Pleroma.Web.ActivityPub.Utils
Diffstat (limited to 'lib/pleroma/activity/queries.ex')
-rw-r--r--lib/pleroma/activity/queries.ex32
1 files changed, 25 insertions, 7 deletions
diff --git a/lib/pleroma/activity/queries.ex b/lib/pleroma/activity/queries.ex
index aa5b29566..13fa33831 100644
--- a/lib/pleroma/activity/queries.ex
+++ b/lib/pleroma/activity/queries.ex
@@ -13,6 +13,14 @@ defmodule Pleroma.Activity.Queries do
alias Pleroma.Activity
+ @spec by_ap_id(query, String.t()) :: query
+ def by_ap_id(query \\ Activity, ap_id) do
+ from(
+ activity in query,
+ where: fragment("(?)->>'id' = ?", activity.data, ^to_string(ap_id))
+ )
+ end
+
@spec by_actor(query, String.t()) :: query
def by_actor(query \\ Activity, actor) do
from(
@@ -21,8 +29,23 @@ defmodule Pleroma.Activity.Queries do
)
end
- @spec by_object_id(query, String.t()) :: query
- def by_object_id(query \\ Activity, object_id) do
+ @spec by_object_id(query, String.t() | [String.t()]) :: query
+ def by_object_id(query \\ Activity, object_id)
+
+ def by_object_id(query, object_ids) when is_list(object_ids) do
+ from(
+ activity in query,
+ where:
+ fragment(
+ "coalesce((?)->'object'->>'id', (?)->>'object') = ANY(?)",
+ activity.data,
+ activity.data,
+ ^object_ids
+ )
+ )
+ end
+
+ def by_object_id(query, object_id) when is_binary(object_id) do
from(activity in query,
where:
fragment(
@@ -41,9 +64,4 @@ defmodule Pleroma.Activity.Queries do
where: fragment("(?)->>'type' = ?", activity.data, ^activity_type)
)
end
-
- @spec limit(query, pos_integer()) :: query
- def limit(query \\ Activity, limit) do
- from(activity in query, limit: ^limit)
- end
end