Fix muted notification migration only working with a schema
authorrinpatch <rinpatch@sdf.org>
Sun, 6 Oct 2019 14:53:03 +0000 (17:53 +0300)
committerrinpatch <rinpatch@sdf.org>
Sun, 6 Oct 2019 15:06:04 +0000 (18:06 +0300)
Should also improve performance. I tested it on my local DB, but if
anyone has a backup of <=1.0 db they can test this on, please do

priv/repo/migrations/20190711042024_copy_muted_to_muted_notifications.exs

index 815d665494746ca75e984240c70662f5005609d0..b717cab2e8ec546c59b881d55c6781f0b9660ab8 100644 (file)
@@ -1,19 +1,8 @@
 defmodule Pleroma.Repo.Migrations.CopyMutedToMutedNotifications do
   use Ecto.Migration
-  import Ecto.Query
   alias Pleroma.User
 
   def change do
-    query = from(u in "users", where: fragment("not (?->'deactivated' @> 'true')", u.info), select: %{info: u.info}, where: u.local == true, order_by: u.id)
-    Pleroma.Repo.stream(query)
-    |> Enum.each(fn
-      %{info: %{mutes: mutes} = info} = user ->
-        info_cng =
-          Ecto.Changeset.cast(info, %{muted_notifications: mutes}, [:muted_notifications])
-
-        Ecto.Changeset.change(user)
-        |> Ecto.Changeset.put_embed(:info, info_cng)
-        |> Pleroma.Repo.update()
-    end)
+  execute("update users set info = jsonb_set(info, '{muted_notifications}', info->'mutes', true) where local = true")
   end
 end