diff options
author | Aaron Tinio <aptinio@gmail.com> | 2019-05-16 06:25:14 +0800 |
---|---|---|
committer | Aaron Tinio <aptinio@gmail.com> | 2019-05-16 06:25:14 +0800 |
commit | 793f1834d2bc37ba3d4ba11fb669078950994adb (patch) | |
tree | 99519a6205de10f6d9b842b920caa7faddc2fbc1 /lib/pleroma/activity.ex | |
parent | 2b6119dfbf47f118dfb102fc09f6450e59ccf15e (diff) | |
download | pleroma-793f1834d2bc37ba3d4ba11fb669078950994adb.tar.gz |
Use named binding to conditionally join object
Diffstat (limited to 'lib/pleroma/activity.ex')
-rw-r--r-- | lib/pleroma/activity.ex | 19 |
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 |