aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/web/admin_api/search.ex
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pleroma/web/admin_api/search.ex')
-rw-r--r--lib/pleroma/web/admin_api/search.ex30
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/pleroma/web/admin_api/search.ex b/lib/pleroma/web/admin_api/search.ex
new file mode 100644
index 0000000..f5195ac
--- /dev/null
+++ b/lib/pleroma/web/admin_api/search.ex
@@ -0,0 +1,30 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Web.AdminAPI.Search do
+ import Ecto.Query
+
+ alias Pleroma.Repo
+ alias Pleroma.User
+
+ @page_size 50
+
+ @spec user(map()) :: {:ok, [User.t()], pos_integer()}
+ def user(params \\ %{}) do
+ query =
+ params
+ |> Map.drop([:page, :page_size])
+ |> Map.put(:invisible, false)
+ |> User.Query.build()
+ |> order_by(desc: :id)
+
+ paginated_query =
+ User.Query.paginate(query, params[:page] || 1, params[:page_size] || @page_size)
+
+ count = Repo.aggregate(query, :count, :id)
+
+ results = Repo.all(paginated_query)
+ {:ok, results, count}
+ end
+end