Migrate old notification settings to new variants
authorMark Felder <feld@FreeBSD.org>
Thu, 28 May 2020 20:34:11 +0000 (15:34 -0500)
committerMark Felder <feld@FreeBSD.org>
Thu, 28 May 2020 20:34:11 +0000 (15:34 -0500)
priv/repo/migrations/20200528160439_users_update_notification_settings.exs [new file with mode: 0644]

diff --git a/priv/repo/migrations/20200528160439_users_update_notification_settings.exs b/priv/repo/migrations/20200528160439_users_update_notification_settings.exs
new file mode 100644 (file)
index 0000000..561f7a2
--- /dev/null
@@ -0,0 +1,43 @@
+defmodule Pleroma.Repo.Migrations.UsersUpdateNotificationSettings do
+  use Ecto.Migration
+
+  def up do
+    execute(
+      "UPDATE users SET notification_settings = notification_settings - 'followers' || jsonb_build_object('from_followers', notification_settings->'followers')
+where notification_settings ? 'followers'
+and local"
+    )
+
+    execute(
+      "UPDATE users SET notification_settings = notification_settings - 'follows' || jsonb_build_object('from_following', notification_settings->'follows')
+where notification_settings ? 'follows'
+and local"
+    )
+
+    execute(
+      "UPDATE users SET notification_settings = notification_settings - 'non_followers' || jsonb_build_object('from_strangers', notification_settings->'non_followers')
+where notification_settings ? 'non_followers'
+and local"
+    )
+  end
+
+  def down do
+    execute(
+      "UPDATE users SET notification_settings = notification_settings - 'from_followers' || jsonb_build_object('followers', notification_settings->'from_followers')
+where notification_settings ? 'from_followers'
+and local"
+    )
+
+    execute(
+      "UPDATE users SET notification_settings = notification_settings - 'from_following' || jsonb_build_object('follows', notification_settings->'from_following')
+where notification_settings ? 'from_following'
+and local"
+    )
+
+    execute(
+      "UPDATE users SET notification_settings = notification_settings - 'from_strangers' || jsonb_build_object('non_follows', notification_settings->'from_strangers')
+where notification_settings ? 'from_strangers'
+and local"
+    )
+  end
+end