activity: add with_preloaded_object() convenience

This commit is contained in:
William Pitcock 2019-03-23 00:09:56 +00:00
parent 62bccddde0
commit 092cedede5
1 changed files with 18 additions and 0 deletions

View File

@ -44,11 +44,29 @@ defmodule Pleroma.Activity do
# fragment("(?->>'id') = COALESCE((? -> 'object'::text) ->> 'id'::text)", o.data, activity.data)) # fragment("(?->>'id') = COALESCE((? -> 'object'::text) ->> 'id'::text)", o.data, activity.data))
# |> preload([activity, object], [object: object]) # |> 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) has_one(:object, Object, on_delete: :nothing, foreign_key: :id)
timestamps() timestamps()
end 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 def get_by_ap_id(ap_id) do
Repo.one( Repo.one(
from( from(