Migrate missing follow requests
authorkPherox <admin@mail.kr-kp.com>
Tue, 29 Oct 2019 10:16:34 +0000 (19:16 +0900)
committerkPherox <admin@mail.kr-kp.com>
Tue, 29 Oct 2019 10:22:34 +0000 (19:22 +0900)
priv/repo/migrations/20191029101340_migrate_missing_follow_requests.exs [new file with mode: 0644]

diff --git a/priv/repo/migrations/20191029101340_migrate_missing_follow_requests.exs b/priv/repo/migrations/20191029101340_migrate_missing_follow_requests.exs
new file mode 100644 (file)
index 0000000..1b2666f
--- /dev/null
@@ -0,0 +1,35 @@
+defmodule Pleroma.Repo.Migrations.MigrateFollowingRelationships do
+  use Ecto.Migration
+
+  def change do
+    execute(import_pending_follows_from_activities(), "")
+  end
+
+  defp import_pending_follows_from_activities do
+    """
+    INSERT INTO
+        following_relationships (
+            follower_id,
+            following_id,
+            state,
+            inserted_at,
+            updated_at
+        )
+    SELECT
+        followers.id,
+        following.id,
+        activities.data ->> 'state',
+        (activities.data ->> 'published') :: timestamp,
+        now()
+    FROM
+        activities
+        JOIN users AS followers ON (activities.actor = followers.ap_id)
+        JOIN users AS following ON (activities.data ->> 'object' = following.ap_id)
+    WHERE
+        activities.data ->> 'type' = 'Follow'
+        AND activities.data ->> 'state' = 'pending'
+    ORDER BY activities.updated_at DESC
+    ON CONFLICT DO NOTHING
+    """
+  end
+end