Add rollbacks for associated_object_id
[akkoma] / priv / repo / optional_migrations / pleroma_develop_rollbacks / 20220711192750_switch_to_associated_object_id_index.exs
diff --git a/priv/repo/optional_migrations/pleroma_develop_rollbacks/20220711192750_switch_to_associated_object_id_index.exs b/priv/repo/optional_migrations/pleroma_develop_rollbacks/20220711192750_switch_to_associated_object_id_index.exs
new file mode 100644 (file)
index 0000000..75c1cd4
--- /dev/null
@@ -0,0 +1,37 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Repo.Migrations.SwitchToAssociatedObjectIdIndex do
+  use Ecto.Migration
+  @disable_ddl_transaction true
+  @disable_migration_lock true
+
+  def up do
+    drop_if_exists(
+      index(:activities, ["(coalesce(data->'object'->>'id', data->>'object'))"],
+        name: :activities_create_objects_index
+      )
+    )
+
+    create(
+      index(:activities, ["associated_object_id(data)"],
+        name: :activities_create_objects_index,
+        concurrently: true
+      )
+    )
+  end
+
+  def down do
+    drop_if_exists(
+      index(:activities, ["associated_object_id(data)"], name: :activities_create_objects_index)
+    )
+
+    create(
+      index(:activities, ["(coalesce(data->'object'->>'id', data->>'object'))"],
+        name: :activities_create_objects_index,
+        concurrently: true
+      )
+    )
+  end
+end