Move user search to User module.
authorRoger Braun <roger@rogerbraun.net>
Mon, 30 Oct 2017 18:23:16 +0000 (19:23 +0100)
committerRoger Braun <roger@rogerbraun.net>
Mon, 30 Oct 2017 18:23:16 +0000 (19:23 +0100)
lib/pleroma/user.ex
lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
lib/pleroma/web/router.ex
test/web/mastodon_api/mastodon_api_controller_test.exs

index bfd3a3ad7aa3a5890d10506b7011faa903fec057..bf63a22b3f4075a16581bdfc7728654af8352ac5 100644 (file)
@@ -274,4 +274,14 @@ defmodule Pleroma.User do
 
     Repo.all(query)
   end
+
+  def search(query, resolve) do
+    if resolve do
+      User.get_or_fetch_by_nickname(query)
+    end
+    q = from u in User,
+      where: fragment("(to_tsvector('english', ?) || to_tsvector('english', ?)) @@ plainto_tsquery('english', ?)", u.nickname, u.name, ^query),
+      limit: 20
+    Repo.all(q)
+  end
 end
index dacb0ebe35676648be0848fbb36781fcd1c19171..9399dee867d756e443578a3f7ec4858f59986f52 100644 (file)
@@ -308,19 +308,8 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
     end
   end
 
-  def dousersearch(%{assigns: %{user: user}} = conn, %{"q" => query} = params) do
-    if params["resolve"] == "true" do
-      User.get_or_fetch_by_nickname(query)
-    end
-
-    q = from u in User,
-      where: fragment("(to_tsvector('english', ?) || to_tsvector('english', ?)) @@ plainto_tsquery('english', ?)", u.nickname, u.name, ^query),
-      limit: 20
-    accounts = Repo.all(q)
-  end
-
   def search(%{assigns: %{user: user}} = conn, %{"q" => query} = params) do
-    accounts = Pleroma.Web.MastodonAPI.MastodonAPIController.dousersearch(conn, params)
+    accounts = User.search(query, params["resolve"] == "true")
 
     q = from a in Activity,
       where: fragment("?->>'type' = 'Create'", a.data),
@@ -337,8 +326,8 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
     json(conn, res)
   end
 
-  def accountsearch(%{assigns: %{user: user}} = conn, %{"q" => query} = params) do
-    accounts = Pleroma.Web.MastodonAPI.MastodonAPIController.dousersearch(conn, params)
+  def account_search(%{assigns: %{user: user}} = conn, %{"q" => query} = params) do
+    accounts = User.search(query, params["resolve"] == "true")
 
     res = AccountView.render("accounts.json", users: accounts, for: user, as: :user)
 
index 53f4a45e3b72920dc58e79ba37285a38c44b47e7..1fb5eadf68eb1fcbd4acd8a6468c21344be892f7 100644 (file)
@@ -55,7 +55,7 @@ defmodule Pleroma.Web.Router do
 
     get "/accounts/verify_credentials", MastodonAPIController, :verify_credentials
     get "/accounts/relationships", MastodonAPIController, :relationships
-    get "/accounts/search", MastodonAPIController, :accountsearch
+    get "/accounts/search", MastodonAPIController, :account_search
     post "/accounts/:id/follow", MastodonAPIController, :follow
     post "/accounts/:id/unfollow", MastodonAPIController, :unfollow
     post "/accounts/:id/block", MastodonAPIController, :relationship_noop
index acdb08ac246f8c4deb9887c024596fcd434eb887..485a0d02974e4bb462b08d03028a6106c0a6ea94 100644 (file)
@@ -319,6 +319,19 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
     end)
   end
 
+  test "account seach", %{conn: conn} do
+    user = insert(:user)
+    user_two = insert(:user, %{nickname: "shp@shitposter.club"})
+    user_three = insert(:user, %{nickname: "shp@heldscal.la", name: "I love 2hu"})
+
+    conn = conn
+    |> assign(:user, user)
+    |> get("/api/v1/accounts/search", %{"q" => "2hu"})
+
+    assert [account] = json_response(conn, 200)
+    assert account["id"] == user_three.id
+  end
+
   test "search", %{conn: conn} do
     user = insert(:user)
     user_two = insert(:user, %{nickname: "shp@shitposter.club"})