diff options
author | William Pitcock <nenolod@dereferenced.org> | 2019-03-23 00:09:56 +0000 |
---|---|---|
committer | William Pitcock <nenolod@dereferenced.org> | 2019-03-23 00:09:56 +0000 |
commit | 092cedede507b3e89134deb6f5d09c5db339dfae (patch) | |
tree | b7ad141a3818a718bfd6072199fd0c8d40e30747 /lib | |
parent | 62bccddde02edbf825c1806805cc9d7d7c9a0f13 (diff) | |
download | pleroma-092cedede507b3e89134deb6f5d09c5db339dfae.tar.gz |
activity: add with_preloaded_object() convenience
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/activity.ex | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex index 2f91b3c77..370721070 100644 --- a/lib/pleroma/activity.ex +++ b/lib/pleroma/activity.ex @@ -44,11 +44,29 @@ defmodule Pleroma.Activity do # fragment("(?->>'id') = COALESCE((? -> 'object'::text) ->> 'id'::text)", o.data, activity.data)) # |> preload([activity, object], [object: object]) # ``` + # + # As a convenience, Activity.with_preloaded_object() sets up an inner join and preload for the + # typical case. has_one(:object, Object, on_delete: :nothing, foreign_key: :id) timestamps() end + def with_preloaded_object(query) do + query + |> join( + :inner, + [activity], + o in Object, + fragment( + "(?->>'id') = COALESCE((? -> 'object'::text) ->> 'id'::text)", + o.data, + activity.data + ) + ) + |> preload([activity, object], object: object) + end + def get_by_ap_id(ap_id) do Repo.one( from( |