aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Pitcock <nenolod@dereferenced.org>2019-03-23 02:49:10 +0000
committerWilliam Pitcock <nenolod@dereferenced.org>2019-03-23 03:05:13 +0000
commitf9d5c13b21905b6839f489d4c8d75bc1e95d3875 (patch)
treeed30f9ad03aef0c83e839b6f05f8d0df3484b408
parentce47eb8b29aaba8f59720597485d3c586fbb7831 (diff)
downloadpleroma-f9d5c13b21905b6839f489d4c8d75bc1e95d3875.tar.gz
activity: add get_by_ap_id_with_object()
-rw-r--r--lib/pleroma/activity.ex21
1 files changed, 19 insertions, 2 deletions
diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex
index a762d66ef..fcdac3a3f 100644
--- a/lib/pleroma/activity.ex
+++ b/lib/pleroma/activity.ex
@@ -78,6 +78,23 @@ defmodule Pleroma.Activity do
)
end
+ def get_by_ap_id_with_object(ap_id) do
+ Repo.one(
+ from(
+ activity in Activity,
+ where: fragment("(?)->>'id' = ?", activity.data, ^to_string(ap_id)),
+ inner_join: o in Object,
+ on:
+ fragment(
+ "(?->>'id') = COALESCE((? -> 'object'::text) ->> 'id'::text)",
+ o.data,
+ activity.data
+ ),
+ preload: [object: o]
+ )
+ )
+ end
+
def get_by_id(id) do
Repo.get(Activity, id)
end
@@ -181,8 +198,8 @@ defmodule Pleroma.Activity do
|> Repo.one()
end
- def normalize(obj) when is_map(obj), do: Activity.get_by_ap_id(obj["id"])
- def normalize(ap_id) when is_binary(ap_id), do: Activity.get_by_ap_id(ap_id)
+ def normalize(obj) when is_map(obj), do: get_by_ap_id_with_object(obj["id"])
+ def normalize(ap_id) when is_binary(ap_id), do: get_by_ap_id_with_object(ap_id)
def normalize(_), do: nil
def get_in_reply_to_activity(%Activity{data: %{"object" => %{"inReplyTo" => ap_id}}}) do