aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/user.ex
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pleroma/user.ex')
-rw-r--r--lib/pleroma/user.ex16
1 files changed, 6 insertions, 10 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex
index 3984e610e..511e6956e 100644
--- a/lib/pleroma/user.ex
+++ b/lib/pleroma/user.ex
@@ -2,6 +2,7 @@ defmodule Pleroma.User do
use Ecto.Schema
import Ecto.{Changeset, Query}
+ alias Ecto.Multi
alias Pleroma.{Repo, User, Object, Web, Activity, Notification}
alias Comeonin.Pbkdf2
alias Pleroma.Formatter
@@ -844,18 +845,13 @@ defmodule Pleroma.User do
|> List.flatten()
|> Enum.map(&String.downcase(&1))
- Repo.transaction(fn ->
- for user <- users do
+ multi =
+ Enum.reduce(users, Multi.new(), fn user, multi ->
new_tags = mutate_tags(user, tags, action)
+ Multi.update(multi, {:user, user.id}, change(user, %{tags: new_tags}))
+ end)
- {:ok, updated_user} =
- user
- |> change(%{tags: new_tags})
- |> Repo.update()
-
- updated_user
- end
- end)
+ Repo.transaction(multi)
end
defp mutate_tags(user, tags, :tag), do: Enum.uniq(user.tags ++ tags)