diff options
author | William Pitcock <nenolod@dereferenced.org> | 2019-03-23 02:49:10 +0000 |
---|---|---|
committer | William Pitcock <nenolod@dereferenced.org> | 2019-03-23 03:05:13 +0000 |
commit | f9d5c13b21905b6839f489d4c8d75bc1e95d3875 (patch) | |
tree | ed30f9ad03aef0c83e839b6f05f8d0df3484b408 | |
parent | ce47eb8b29aaba8f59720597485d3c586fbb7831 (diff) | |
download | pleroma-f9d5c13b21905b6839f489d4c8d75bc1e95d3875.tar.gz |
activity: add get_by_ap_id_with_object()
-rw-r--r-- | lib/pleroma/activity.ex | 21 |
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 |