|
@@ -45,6 +45,7 @@ defmodule Pleroma.User.Search do |
|
|
for_user |
|
|
for_user |
|
|
|> base_query(following) |
|
|
|> base_query(following) |
|
|
|> filter_blocked_user(for_user) |
|
|
|> filter_blocked_user(for_user) |
|
|
|
|
|
|> filter_invisible_users() |
|
|
|> filter_blocked_domains(for_user) |
|
|
|> filter_blocked_domains(for_user) |
|
|
|> fts_search(query_string) |
|
|
|> fts_search(query_string) |
|
|
|> trigram_rank(query_string) |
|
|
|> trigram_rank(query_string) |
|
@@ -98,6 +99,10 @@ defmodule Pleroma.User.Search do |
|
|
defp base_query(_user, false), do: User |
|
|
defp base_query(_user, false), do: User |
|
|
defp base_query(user, true), do: User.get_followers_query(user) |
|
|
defp base_query(user, true), do: User.get_followers_query(user) |
|
|
|
|
|
|
|
|
|
|
|
defp filter_invisible_users(query) do |
|
|
|
|
|
from(q in query, where: q.invisible == false) |
|
|
|
|
|
end |
|
|
|
|
|
|
|
|
defp filter_blocked_user(query, %User{blocks: blocks}) |
|
|
defp filter_blocked_user(query, %User{blocks: blocks}) |
|
|
when length(blocks) > 0 do |
|
|
when length(blocks) > 0 do |
|
|
from(q in query, where: not (q.ap_id in ^blocks)) |
|
|
from(q in query, where: not (q.ap_id in ^blocks)) |
|
|