Refactor with Chat.for_user_query/1
authorAlex Gleason <alex@alexgleason.me>
Wed, 2 Sep 2020 00:05:24 +0000 (19:05 -0500)
committerAlex Gleason <alex@alexgleason.me>
Fri, 11 Sep 2020 19:10:13 +0000 (14:10 -0500)
lib/pleroma/chat.ex
lib/pleroma/web/admin_api/controllers/admin_api_controller.ex
lib/pleroma/web/pleroma_api/controllers/chat_controller.ex

index 24a86371e7801594caa18acc33b7b9eb999f73b6..b38c5c3ddfe92801abcab51042a68e66d9b1e6e8 100644 (file)
@@ -6,7 +6,9 @@ defmodule Pleroma.Chat do
   use Ecto.Schema
 
   import Ecto.Changeset
+  import Ecto.Query
 
+  alias Pleroma.Chat
   alias Pleroma.Repo
   alias Pleroma.User
 
@@ -69,4 +71,14 @@ defmodule Pleroma.Chat do
       conflict_target: [:user_id, :recipient]
     )
   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
index 9b66c2f10f600b262985955a8979f99612de2ed9..fccdbabb4cf1ed2f7816810baebecbaed02e895d 100644 (file)
@@ -5,7 +5,6 @@
 defmodule Pleroma.Web.AdminAPI.AdminAPIController do
   use Pleroma.Web, :controller
 
-  import Ecto.Query
   import Pleroma.Web.ControllerHelper, only: [json_response: 3]
 
   alias Pleroma.Config
@@ -267,12 +266,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController 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
       chats =
-        from(c in Pleroma.Chat,
-          where: c.user_id == ^user_id,
-          order_by: [desc: c.updated_at],
-          inner_join: u in User,
-          on: u.ap_id == c.recipient
-        )
+        Pleroma.Chat.for_user_query(user_id)
         |> Pleroma.Repo.all()
 
       conn
index 1f2e953f761cc4e915263946d13e9ad97a3cf97d..27c9a2e0f77a0022019e21caa4b224ca9e81b6ae 100644 (file)
@@ -146,13 +146,8 @@ defmodule Pleroma.Web.PleromaAPI.ChatController do
     blocked_ap_ids = User.blocked_users_ap_ids(user)
 
     chats =
-      from(c in Chat,
-        where: c.user_id == ^user_id,
-        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
-      )
+      Chat.for_user_query(user_id)
+      |> where([c], c.recipient not in ^blocked_ap_ids)
       |> Repo.all()
 
     conn