logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma
commit: 606766b010b028d284c7a58161f6a147915449d0
parent: 9b80203ea5d3a43ccba15f20172c790e127038f9
Author: kaniini <nenolod@gmail.com>
Date:   Wed, 20 Mar 2019 00:37:20 +0000

Merge branch 'fix/search-users-for-admin' into 'develop'

Rework users search

Closes admin-fe#12

See merge request pleroma/pleroma!954

Diffstat:

Mlib/pleroma/user.ex23++++++++---------------
Mtest/user_test.exs17+++++++++++++++++
2 files changed, 25 insertions(+), 15 deletions(-)

diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex @@ -788,34 +788,27 @@ defmodule Pleroma.User do @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(%{ query: term, - admin: admin, local: local, page: page, page_size: page_size }) do - term = String.trim_leading(term, "@") + maybe_local_query = User |> maybe_local_user_query(local) - local_paginated_query = - User - |> maybe_local_user_query(local) - |> paginate(page, page_size) + search_query = from(u in maybe_local_query, where: ilike(u.nickname, ^"%#{term}%")) + count = search_query |> Repo.aggregate(:count, :id) - search_query = fts_search_subquery(term, local_paginated_query) - - count = - term - |> fts_search_subquery() - |> maybe_local_user_query(local) - |> Repo.aggregate(:count, :id) + results = + search_query + |> paginate(page, page_size) + |> Repo.all() - {:ok, do_search(search_query, admin), count} + {:ok, results, count} end def search(query, resolve \\ false, for_user \\ nil) do diff --git a/test/user_test.exs b/test/user_test.exs @@ -1098,4 +1098,21 @@ defmodule Pleroma.UserTest do assert {:ok, user_state3} = User.bookmark(user, id2) assert user_state3.bookmarks == [id2] end + + describe "search for admin" do + test "it ignores case" do + insert(:user, nickname: "papercoach") + insert(:user, nickname: "CanadaPaperCoach") + + {:ok, _results, count} = + User.search_for_admin(%{ + query: "paper", + local: false, + page: 1, + page_size: 50 + }) + + assert count == 2 + end + end end