diff options
| author | Maxim Filippov <colixer@gmail.com> | 2019-03-04 21:26:32 +0300 | 
|---|---|---|
| committer | Maxim Filippov <colixer@gmail.com> | 2019-03-04 21:26:32 +0300 | 
| commit | f62019983605dd9af9017351a59b52807bb74ba1 (patch) | |
| tree | 4bc00f3b31bbcc839ea29b2eee1e0789e0068fca /lib | |
| parent | ca5d894e6811e0020facabdaa12d2fd263b497c5 (diff) | |
| download | pleroma-f62019983605dd9af9017351a59b52807bb74ba1.tar.gz pleroma-f62019983605dd9af9017351a59b52807bb74ba1.zip  | |
Merge search endpoint into /users
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/user.ex | 47 | ||||
| -rw-r--r-- | lib/pleroma/web/admin_api/admin_api_controller.ex | 37 | ||||
| -rw-r--r-- | lib/pleroma/web/router.ex | 1 | 
3 files changed, 49 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..12b36a1c0 100644 --- a/lib/pleroma/web/admin_api/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/admin_api_controller.ex @@ -63,28 +63,29 @@ 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(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 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 6fcb46878..3b1fd46a5 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)  | 
