aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorWilliam Pitcock <nenolod@dereferenced.org>2019-03-23 00:09:56 +0000
committerWilliam Pitcock <nenolod@dereferenced.org>2019-03-23 00:09:56 +0000
commit092cedede507b3e89134deb6f5d09c5db339dfae (patch)
treeb7ad141a3818a718bfd6072199fd0c8d40e30747 /lib
parent62bccddde02edbf825c1806805cc9d7d7c9a0f13 (diff)
downloadpleroma-092cedede507b3e89134deb6f5d09c5db339dfae.tar.gz
activity: add with_preloaded_object() convenience
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/activity.ex18
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(