Refactor with Chat.for_user_query/1

This commit is contained in:
Alex Gleason 2020-09-01 19:05:24 -05:00
parent fb0de07343
commit c41430b23e
No known key found for this signature in database
GPG key ID: 7211D1F99744FBB7
3 changed files with 15 additions and 14 deletions

View file

@ -6,7 +6,9 @@ defmodule Pleroma.Chat do
use Ecto.Schema use Ecto.Schema
import Ecto.Changeset import Ecto.Changeset
import Ecto.Query
alias Pleroma.Chat
alias Pleroma.Repo alias Pleroma.Repo
alias Pleroma.User alias Pleroma.User
@ -69,4 +71,14 @@ def bump_or_create(user_id, recipient) do
conflict_target: [:user_id, :recipient] conflict_target: [:user_id, :recipient]
) )
end end
@spec for_user_query(FlakeId.Ecto.CompatType.t()) :: Ecto.Query.t()
def for_user_query(user_id) do
from(c in Chat,
where: c.user_id == ^user_id,
order_by: [desc: c.updated_at],
inner_join: u in User,
on: u.ap_id == c.recipient
)
end
end end

View file

@ -5,7 +5,6 @@
defmodule Pleroma.Web.AdminAPI.AdminAPIController do defmodule Pleroma.Web.AdminAPI.AdminAPIController do
use Pleroma.Web, :controller use Pleroma.Web, :controller
import Ecto.Query
import Pleroma.Web.ControllerHelper, only: [json_response: 3] import Pleroma.Web.ControllerHelper, only: [json_response: 3]
alias Pleroma.Config alias Pleroma.Config
@ -267,12 +266,7 @@ def list_user_statuses(%{assigns: %{user: admin}} = conn, %{"nickname" => nickna
def list_user_chats(%{assigns: %{user: admin}} = conn, %{"nickname" => nickname} = _params) do def list_user_chats(%{assigns: %{user: admin}} = conn, %{"nickname" => nickname} = _params) do
with %User{id: user_id} <- User.get_cached_by_nickname_or_id(nickname, for: admin) do with %User{id: user_id} <- User.get_cached_by_nickname_or_id(nickname, for: admin) do
chats = chats =
from(c in Pleroma.Chat, Pleroma.Chat.for_user_query(user_id)
where: c.user_id == ^user_id,
order_by: [desc: c.updated_at],
inner_join: u in User,
on: u.ap_id == c.recipient
)
|> Pleroma.Repo.all() |> Pleroma.Repo.all()
conn conn

View file

@ -146,13 +146,8 @@ def index(%{assigns: %{user: %{id: user_id} = user}} = conn, _params) do
blocked_ap_ids = User.blocked_users_ap_ids(user) blocked_ap_ids = User.blocked_users_ap_ids(user)
chats = chats =
from(c in Chat, Chat.for_user_query(user_id)
where: c.user_id == ^user_id, |> where([c], c.recipient not in ^blocked_ap_ids)
where: c.recipient not in ^blocked_ap_ids,
order_by: [desc: c.updated_at],
inner_join: u in User,
on: u.ap_id == c.recipient
)
|> Repo.all() |> Repo.all()
conn conn