diff options
| author | kaniini <nenolod@gmail.com> | 2019-03-06 22:27:42 +0000 | 
|---|---|---|
| committer | kaniini <nenolod@gmail.com> | 2019-03-06 22:27:42 +0000 | 
| commit | 0fe715f3ba0f787154ab8e86c8745d7f09affdcb (patch) | |
| tree | 3560d668fe7feec0dcce59858ee4e7a6fdd54e18 /lib | |
| parent | 39b766cc43c39dbff84cb498c4b4c764abdec9a0 (diff) | |
| parent | 76160122f6d7bf52aee929328acb4d216e4c3504 (diff) | |
| download | pleroma-0fe715f3ba0f787154ab8e86c8745d7f09affdcb.tar.gz pleroma-0fe715f3ba0f787154ab8e86c8745d7f09affdcb.zip | |
Merge branch 'chore/merge-search-into-list-users' into 'develop'
Merge search endpoint into /users
See merge request pleroma/pleroma!898
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/user.ex | 47 | ||||
| -rw-r--r-- | lib/pleroma/web/admin_api/admin_api_controller.ex | 22 | ||||
| -rw-r--r-- | lib/pleroma/web/router.ex | 1 | 
3 files changed, 34 insertions, 36 deletions
| diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 50e7e7ccd..3878e4efa 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -749,13 +749,41 @@ defmodule Pleroma.User do      Repo.all(query)    end -  @spec search_for_admin(binary(), %{ +  @spec search_for_admin(%{ +          local: boolean(), +          page: number(), +          page_size: number() +        }) :: {:ok, [Pleroma.User.t()], number()} +  def search_for_admin(%{query: nil, local: local, page: page, page_size: page_size}) do +    query = +      from(u in User, order_by: u.id) +      |> maybe_local_user_query(local) + +    paginated_query = +      query +      |> paginate(page, page_size) + +    count = +      query +      |> Repo.aggregate(:count, :id) + +    {:ok, Repo.all(paginated_query), count} +  end + +  @spec search_for_admin(%{ +          query: binary(),            admin: Pleroma.User.t(),            local: boolean(),            page: number(),            page_size: number()          }) :: {:ok, [Pleroma.User.t()], number()} -  def search_for_admin(term, %{admin: admin, local: local, page: page, page_size: page_size}) do +  def search_for_admin(%{ +        query: term, +        admin: admin, +        local: local, +        page: page, +        page_size: page_size +      }) do      term = String.trim_leading(term, "@")      local_paginated_query = @@ -774,21 +802,6 @@ defmodule Pleroma.User do      {:ok, do_search(search_query, admin), count}    end -  @spec all_for_admin(number(), number()) :: {:ok, [Pleroma.User.t()], number()} -  def all_for_admin(page, page_size) do -    query = from(u in User, order_by: u.id) - -    paginated_query = -      query -      |> paginate(page, page_size) - -    count = -      query -      |> Repo.aggregate(:count, :id) - -    {:ok, Repo.all(paginated_query), count} -  end -    def search(query, resolve \\ false, for_user \\ nil) do      # Strip the beginning @ off if there is a query      query = String.trim_leading(query, "@") diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex index aae02cab8..75c2c6061 100644 --- a/lib/pleroma/web/admin_api/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/admin_api_controller.ex @@ -63,28 +63,14 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do           do: json_response(conn, :no_content, "")    end -  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: page_size -             ) -           ) -  end - -  def search_users(%{assigns: %{user: admin}} = conn, %{"query" => query} = params) do +  def list_users(%{assigns: %{user: admin}} = conn, params) do      {page, page_size} = page_params(params)      with {:ok, users, count} <- -           User.search_for_admin(query, %{ +           User.search_for_admin(%{ +             query: params["query"],               admin: admin, -             local: params["local"] == "true", +             local: params["local_only"] == "true",               page: page,               page_size: page_size             }), diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index fc322756a..65a90e31e 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -140,7 +140,6 @@ defmodule Pleroma.Web.Router do      pipe_through([:admin_api, :oauth_write])      get("/users", AdminAPIController, :list_users) -    get("/users/search", AdminAPIController, :search_users)      delete("/user", AdminAPIController, :user_delete)      patch("/users/:nickname/toggle_activation", AdminAPIController, :user_toggle_activation)      post("/user", AdminAPIController, :user_create) | 
