diff options
Diffstat (limited to 'lib/pleroma/web/admin_api/search.ex')
| -rw-r--r-- | lib/pleroma/web/admin_api/search.ex | 30 |
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 |
