aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/web
diff options
context:
space:
mode:
authorMaxim Filippov <colixer@gmail.com>2019-03-02 17:21:18 +0300
committerMaxim Filippov <colixer@gmail.com>2019-03-02 17:21:30 +0300
commit2ec8cf566569912b767e15ab467cadd04fd1fd1c (patch)
treebd5ead581b022123f604d96b9a4191ec4ff801a8 /lib/pleroma/web
parentf635b675b2cc0bc10b395cd71ae1720b0696d364 (diff)
downloadpleroma-2ec8cf566569912b767e15ab467cadd04fd1fd1c.tar.gz
Add pagination to search
Diffstat (limited to 'lib/pleroma/web')
-rw-r--r--lib/pleroma/web/admin_api/admin_api_controller.ex66
1 files changed, 45 insertions, 21 deletions
diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex
index 33f9689cd..aae02cab8 100644
--- a/lib/pleroma/web/admin_api/admin_api_controller.ex
+++ b/lib/pleroma/web/admin_api/admin_api_controller.ex
@@ -63,38 +63,40 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
do: json_response(conn, :no_content, "")
end
- def list_users(%{assigns: %{user: admin}} = conn, %{"page" => page_string}) do
- with {page, _} <- Integer.parse(page_string),
- users <- User.all(page, @users_page_size),
- count <- User.count_all_except_one(admin),
+ def list_users(conn, params) do
+ {page, page_size} = page_params(params)
+
+ with {:ok, users, count} <- User.all_for_admin(page, page_size),
do:
conn
|> json(
AccountView.render("index.json",
users: users,
count: count,
- page_size: @users_page_size
+ page_size: page_size
)
)
end
- def search_users(%{assigns: %{user: admin}} = conn, %{"query" => term} = params) do
- users =
- User.search(term,
- query: User.maybe_local_user_query(params["local"] == "true"),
- resolve: true,
- for_user: admin,
- limit: @users_page_size
- )
+ def search_users(%{assigns: %{user: admin}} = conn, %{"query" => query} = params) do
+ {page, page_size} = page_params(params)
- conn
- |> json(
- AccountView.render("index.json",
- users: users,
- count: length(users),
- page_size: @users_page_size
- )
- )
+ with {:ok, users, count} <-
+ User.search_for_admin(query, %{
+ admin: admin,
+ local: params["local"] == "true",
+ page: page,
+ page_size: page_size
+ }),
+ do:
+ conn
+ |> json(
+ AccountView.render("index.json",
+ users: users,
+ count: count,
+ page_size: page_size
+ )
+ )
end
def right_add(conn, %{"permission_group" => permission_group, "nickname" => nickname})
@@ -240,4 +242,26 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
|> put_status(500)
|> json("Something went wrong")
end
+
+ defp page_params(params) do
+ {get_page(params["page"]), get_page_size(params["page_size"])}
+ end
+
+ defp get_page(page_string) when is_nil(page_string), do: 1
+
+ defp get_page(page_string) do
+ case Integer.parse(page_string) do
+ {page, _} -> page
+ :error -> 1
+ end
+ end
+
+ defp get_page_size(page_size_string) when is_nil(page_size_string), do: @users_page_size
+
+ defp get_page_size(page_size_string) do
+ case Integer.parse(page_size_string) do
+ {page_size, _} -> page_size
+ :error -> @users_page_size
+ end
+ end
end