forked from AkkomaGang/akkoma
Refactor with Chat.for_user_query/1
This commit is contained in:
parent
fb0de07343
commit
c41430b23e
3 changed files with 15 additions and 14 deletions
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue