Merge branch '161-incoming-replies-depth-limit' into 'develop'
[akkoma] / lib / pleroma / web / mastodon_api / search_controller.ex
index 0d1e2355d203d73350fea6adbf5b8036d9956df9..efa9cc78824eb00add3735568e57a89943b5d69e 100644 (file)
@@ -17,8 +17,8 @@ defmodule Pleroma.Web.MastodonAPI.SearchController do
   plug(Pleroma.Plugs.RateLimiter, :search when action in [:search, :search2, :account_search])
 
   def search2(%{assigns: %{user: user}} = conn, %{"q" => query} = params) do
-    accounts = User.search(query, search_options(params, user))
-    statuses = Activity.search(user, query)
+    accounts = with_fallback(fn -> User.search(query, search_options(params, user)) end, [])
+    statuses = with_fallback(fn -> Activity.search(user, query) end, [])
     tags_path = Web.base_url() <> "/tag/"
 
     tags =
@@ -40,8 +40,8 @@ defmodule Pleroma.Web.MastodonAPI.SearchController do
   end
 
   def search(%{assigns: %{user: user}} = conn, %{"q" => query} = params) do
-    accounts = User.search(query, search_options(params, user))
-    statuses = Activity.search(user, query)
+    accounts = with_fallback(fn -> User.search(query, search_options(params, user)) end, [])
+    statuses = with_fallback(fn -> Activity.search(user, query) end, [])
 
     tags =
       query
@@ -76,4 +76,14 @@ defmodule Pleroma.Web.MastodonAPI.SearchController do
       for_user: user
     ]
   end
+
+  defp with_fallback(f, fallback) do
+    try do
+      f.()
+    rescue
+      error ->
+        Logger.error("#{__MODULE__} search error: #{inspect(error)}")
+        fallback
+    end
+  end
 end