notification: preload child objects

This commit is contained in:
William Pitcock 2019-03-23 02:19:34 +00:00
parent 4cedf45423
commit 9a06d9f6e8

View file

@ -7,6 +7,7 @@ defmodule Pleroma.Notification do
alias Pleroma.Activity alias Pleroma.Activity
alias Pleroma.Notification alias Pleroma.Notification
alias Pleroma.Object
alias Pleroma.Pagination alias Pleroma.Pagination
alias Pleroma.Repo alias Pleroma.Repo
alias Pleroma.User alias Pleroma.User
@ -33,7 +34,10 @@ def for_user_query(user) do
Notification Notification
|> where(user_id: ^user.id) |> where(user_id: ^user.id)
|> join(:inner, [n], activity in assoc(n, :activity)) |> join(:inner, [n], activity in assoc(n, :activity))
|> preload(:activity) |> join(:left, [n, a], object in Object,
on: fragment("(?->>'id') = COALESCE((? -> 'object'::text) ->> 'id'::text)", object.data, a.data)
)
|> preload([n, a, o], activity: {a, object: o})
end end
def for_user(user, opts \\ %{}) do def for_user(user, opts \\ %{}) do