aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/activity.ex
diff options
context:
space:
mode:
authorAaron Tinio <aptinio@gmail.com>2019-05-16 06:25:14 +0800
committerAaron Tinio <aptinio@gmail.com>2019-05-16 06:25:14 +0800
commit793f1834d2bc37ba3d4ba11fb669078950994adb (patch)
tree99519a6205de10f6d9b842b920caa7faddc2fbc1 /lib/pleroma/activity.ex
parent2b6119dfbf47f118dfb102fc09f6450e59ccf15e (diff)
downloadpleroma-793f1834d2bc37ba3d4ba11fb669078950994adb.tar.gz
Use named binding to conditionally join object
Diffstat (limited to 'lib/pleroma/activity.ex')
-rw-r--r--lib/pleroma/activity.ex19
1 files changed, 11 insertions, 8 deletions
diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex
index 4a0919478..3fd4003f8 100644
--- a/lib/pleroma/activity.ex
+++ b/lib/pleroma/activity.ex
@@ -60,21 +60,24 @@ defmodule Pleroma.Activity do
timestamps()
end
- def with_preloaded_object(query) do
- query
- |> join(
- :inner,
- [activity],
- o in Object,
+ def with_joined_object(query) do
+ join(query, :inner, [activity], o in Object,
on:
fragment(
"(?->>'id') = COALESCE(?->'object'->>'id', ?->>'object')",
o.data,
activity.data,
activity.data
- )
+ ),
+ as: :object
)
- |> preload([activity, object], object: object)
+ end
+
+ def with_preloaded_object(query) do
+ query
+ |> has_named_binding?(:object)
+ |> if(do: query, else: with_joined_object(query))
+ |> preload([activity, object: object], object: object)
end
def with_preloaded_bookmark(query, %User{} = user) do