Compare commits

...

2 commits

Author SHA1 Message Date
af349b073a Deduplicate query_with 2023-08-07 03:53:53 +09:00
aba4e6ea60 Replace map |> join with map_join 2023-08-06 22:17:17 +09:00
17 changed files with 41 additions and 60 deletions

View file

@ -224,8 +224,7 @@ defp hell_thread_mentions(users) do
|> Enum.reduce([users[:user]], fn group, acc ->
acc ++ Enum.take(users[group], 5)
end)
|> Enum.map(&"@#{&1.nickname}")
|> Enum.join(", ")
|> Enum.map_join(", ", &"@#{&1.nickname}")
Cachex.put(:user_cache, "hell_thread_mentions", cached)
cached

View file

@ -8,6 +8,7 @@ defmodule Mix.Tasks.Pleroma.Activity do
alias Pleroma.User
alias Pleroma.Web.CommonAPI
alias Pleroma.Pagination
alias Pleroma.Search.DatabaseSearch
require Logger
import Mix.Pleroma
import Ecto.Query
@ -24,11 +25,25 @@ def run(["delete_by_keyword", user, keyword | _rest]) do
start_pleroma()
u = User.get_by_nickname(user)
index_type =
cond do
Pleroma.Config.get([:database, :rum_enabled]) -> :rum
Pleroma.Config.get([:database, :pgroonga_enabled]) -> :pgroonga
true -> :gin
end
search_function =
if :persistent_term.get({Pleroma.Repo, :postgres_version}) >= 11 do
:websearch
else
:plain
end
Activity
|> Activity.with_preloaded_object()
|> Activity.restrict_deactivated_users()
|> Activity.Queries.by_author(u)
|> query_with(keyword)
|> DatabaseSearch.query_with(index_type, keyword, search_function)
|> Pagination.fetch_paginated(
%{"offset" => 0, "limit" => 20, "skip_order" => false},
:offset
@ -37,22 +52,4 @@ def run(["delete_by_keyword", user, keyword | _rest]) do
|> Enum.count()
|> IO.puts()
end
defp query_with(q, search_query) do
%{rows: [[tsc]]} =
Ecto.Adapters.SQL.query!(
Pleroma.Repo,
"select current_setting('default_text_search_config')::regconfig::oid;"
)
from([a, o] in q,
where:
fragment(
"to_tsvector(?::oid::regconfig, ?->>'content') @@ websearch_to_tsquery(?)",
^tsc,
o.data,
^search_query
)
)
end
end

View file

@ -303,7 +303,7 @@ def run(["gen" | rest]) do
else
shell_error(
"The task would have overwritten the following files:\n" <>
(Enum.map(will_overwrite, &"- #{&1}\n") |> Enum.join("")) <>
Enum.map_join(will_overwrite, "", &"- #{&1}\n") <>
"Rerun with `--force` to overwrite them."
)
end

View file

@ -43,7 +43,7 @@ def report(to, reporter, account, statuses, comment) do
if is_list(statuses) && length(statuses) > 0 do
statuses_list_html =
statuses
|> Enum.map(fn
|> Enum.map_join("\n", fn
%{id: id} ->
status_url = Helpers.o_status_url(Pleroma.Web.Endpoint, :notice, id)
"<li><a href=\"#{status_url}\">#{status_url}</li>"
@ -54,7 +54,6 @@ def report(to, reporter, account, statuses, comment) do
id when is_binary(id) ->
"<li><a href=\"#{id}\">#{id}</li>"
end)
|> Enum.join("\n")
"""
<p> Statuses:

View file

@ -134,10 +134,9 @@ defp update_emojis(emojis) do
|> hd()
|> String.trim()
|> String.split()
|> Enum.map(fn codepoint ->
|> Enum.map_join(fn codepoint ->
<<String.to_integer(codepoint, 16)::utf8>>
end)
|> Enum.join()
end)
|> Enum.uniq()

View file

@ -207,8 +207,7 @@ def compose_regex(%User{} = user, format) do
def compose_regex([_ | _] = filters, format) do
phrases =
filters
|> Enum.map(& &1.phrase)
|> Enum.join("|")
|> Enum.map_join("|", & &1.phrase)
case format do
:postgres ->

View file

@ -556,14 +556,12 @@ def get_log_entry_message(%ModerationLog{
defp nicknames_to_string(nicknames) do
nicknames
|> Enum.map(&"@#{&1}")
|> Enum.join(", ")
|> Enum.map_join(", ", &"@#{&1}")
end
defp users_to_nicknames_string(users) do
users
|> Enum.map(&"@#{&1["nickname"]}")
|> Enum.join(", ")
|> Enum.map_join(", ", &"@#{&1["nickname"]}")
end
defp subject_actor_nickname(%ModerationLog{data: data}, prefix_msg, postfix_msg \\ "") do

View file

@ -78,7 +78,7 @@ def restrict_public(q) do
)
end
defp query_with(q, :gin, search_query, :plain) do
def query_with(q, :gin, search_query, :plain) do
%{rows: [[tsc]]} =
Ecto.Adapters.SQL.query!(
Pleroma.Repo,
@ -96,7 +96,7 @@ defp query_with(q, :gin, search_query, :plain) do
)
end
defp query_with(q, :gin, search_query, :websearch) do
def query_with(q, :gin, search_query, :websearch) do
%{rows: [[tsc]]} =
Ecto.Adapters.SQL.query!(
Pleroma.Repo,
@ -114,7 +114,7 @@ defp query_with(q, :gin, search_query, :websearch) do
)
end
defp query_with(q, :rum, search_query, :plain) do
def query_with(q, :rum, search_query, :plain) do
from([a, o] in q,
where:
fragment(
@ -126,7 +126,7 @@ defp query_with(q, :rum, search_query, :plain) do
)
end
defp query_with(q, :rum, search_query, :websearch) do
def query_with(q, :rum, search_query, :websearch) do
from([a, o] in q,
where:
fragment(
@ -138,7 +138,7 @@ defp query_with(q, :rum, search_query, :websearch) do
)
end
defp query_with(q, :pgroonga, search_query, _) do
def query_with(q, :pgroonga, search_query, _) do
# PGroonga only supports PostgreSQL version 11 or newer
from([a, o] in q,
where:

View file

@ -134,8 +134,7 @@ defp to_tsquery(query_string) do
|> String.replace(~r/[!-\/|@|[-`|{-~|:-?]+/, " ")
|> String.trim()
|> String.split()
|> Enum.map(&(&1 <> ":*"))
|> Enum.join(" | ")
|> Enum.map_join(" | ", &(&1 <> ":*"))
end
# Considers nickname match, localized nickname match, name match; preferences nickname match

View file

@ -30,7 +30,7 @@ def call(conn, errors) do
conn
|> put_status(:bad_request)
|> json(%{
error: errors |> Enum.map(&message/1) |> Enum.join(" "),
error: errors |> Enum.map_join(" ", &message/1),
errors: errors |> Enum.map(&render_error/1)
})
end

View file

@ -167,8 +167,7 @@ defp preprocess_uri_query(query) do
defp joined_tag(tags) do
tags
|> Enum.map(fn tag -> String.capitalize(tag) end)
|> Enum.join()
|> Enum.map_join(fn tag -> String.capitalize(tag) end)
end
defp with_fallback(f, fallback \\ []) do

View file

@ -15,8 +15,7 @@ def build_static_tags(params) do
params
|> parser.build_tags()
|> Enum.map(&to_tag/1)
|> Enum.map(&HTML.safe_to_string/1)
|> Enum.join()
|> Enum.map_join(&HTML.safe_to_string/1)
acc <> rendered_html
end)
@ -35,8 +34,7 @@ def build_tags(params) do
params
|> parser.build_tags()
|> Enum.map(&to_tag/1)
|> Enum.map(&HTML.safe_to_string/1)
|> Enum.join()
|> Enum.map_join(&HTML.safe_to_string/1)
acc <> rendered_html
end)

View file

@ -244,8 +244,7 @@ defp attach_selected_params(input, %{conn_params: conn_params, opts: plug_opts})
plug_opts
|> Keyword.get(:params, [])
|> Enum.sort()
|> Enum.map(&Map.get(conn_params, &1, ""))
|> Enum.join(":")
|> Enum.map_join(":", &Map.get(conn_params, &1, ""))
[input, params_string]
|> Enum.join(":")

View file

@ -94,8 +94,7 @@ test "logging user tagged by admin", %{admin: admin, subject1: subject1, subject
users =
[subject1.nickname, subject2.nickname]
|> Enum.map(&"@#{&1}")
|> Enum.join(", ")
|> Enum.map_join(", ", &"@#{&1}")
tags = ["foo", "bar"] |> Enum.join(", ")
@ -115,8 +114,7 @@ test "logging user untagged by admin", %{admin: admin, subject1: subject1, subje
users =
[subject1.nickname, subject2.nickname]
|> Enum.map(&"@#{&1}")
|> Enum.join(", ")
|> Enum.map_join(", ", &"@#{&1}")
tags = ["foo", "bar"] |> Enum.join(", ")

View file

@ -122,8 +122,7 @@ test "it appends specified tags to users with specified nicknames", %{
users =
[user1.nickname, user2.nickname]
|> Enum.map(&"@#{&1}")
|> Enum.join(", ")
|> Enum.map_join(", ", &"@#{&1}")
tags = ["foo", "bar"] |> Enum.join(", ")
@ -168,8 +167,7 @@ test "it removes specified tags from users with specified nicknames", %{
users =
[user1.nickname, user2.nickname]
|> Enum.map(&"@#{&1}")
|> Enum.join(", ")
|> Enum.map_join(", ", &"@#{&1}")
tags = ["x", "z"] |> Enum.join(", ")

View file

@ -247,8 +247,7 @@ test "Removes a conversation", %{user: user_one, conn: conn} do
defp create_direct_message(sender, recips) do
hellos =
recips
|> Enum.map(fn s -> "@#{s.nickname}" end)
|> Enum.join(", ")
|> Enum.map_join(", ", fn s -> "@#{s.nickname}" end)
CommonAPI.post(sender, %{
status: "Hi #{hellos}!",

View file

@ -630,8 +630,8 @@ test "update fields when invalid request", %{conn: conn} do
name_limit = Pleroma.Config.get([:instance, :account_field_name_length])
value_limit = Pleroma.Config.get([:instance, :account_field_value_length])
long_name = Enum.map(0..name_limit, fn _ -> "x" end) |> Enum.join()
long_value = Enum.map(0..value_limit, fn _ -> "x" end) |> Enum.join()
long_name = Enum.map_join(0..name_limit, fn _ -> "x" end)
long_value = Enum.map_join(0..value_limit, fn _ -> "x" end)
fields = [%{name: "foo", value: long_value}]