about summary refs log tree commit diff
path: root/db
diff options
context:
space:
mode:
authorFire Demon <firedemon@creature.cafe>2020-08-22 18:58:36 -0500
committerFire Demon <firedemon@creature.cafe>2020-08-30 05:45:19 -0500
commit7ec22bd569c47adb7d82697228e5b785615cd1e2 (patch)
tree1f5ea50fd5bb969ad785736c66d60caa7b6ad62a /db
parent6c3a1729e38264d811c1ccbe25a91b7c9b04ba9d (diff)
[Privacy] Unlink blocked replies
Diffstat (limited to 'db')
-rw-r--r--db/migrate/20200823002835_unlink_blocked_replies.rb28
-rw-r--r--db/schema.rb2
2 files changed, 29 insertions, 1 deletions
diff --git a/db/migrate/20200823002835_unlink_blocked_replies.rb b/db/migrate/20200823002835_unlink_blocked_replies.rb
new file mode 100644
index 000000000..6968fc93f
--- /dev/null
+++ b/db/migrate/20200823002835_unlink_blocked_replies.rb
@@ -0,0 +1,28 @@
+class UnlinkBlockedReplies < ActiveRecord::Migration[5.2]
+  def up
+    Block.find_each do |block|
+      next if block.account.nil? || block.target_account.nil?
+
+      unlink_replies!(block.account, block.target_account)
+      unlink_mentions!(block.account, block.target_account)
+    end
+  end
+
+  def down
+    nil
+  end
+
+  private
+
+  def unlink_replies!(account, target_account)
+    target_account.statuses.where(in_reply_to_account_id: account.id)
+      .or(account.statuses.where(in_reply_to_account_id: target_account.id))
+      .in_batches.update_all(in_reply_to_account_id: nil)
+  end
+
+  def unlink_mentions!(account, target_account)
+    account.mentions.where(account_id: target_account.id)
+      .or(target_account.mentions.where(account_id: account.id))
+      .in_batches.destroy_all
+  end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 498f2e052..2aa5f6dee 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
 #
 # It's strongly recommended that you check this file into your version control system.
 
-ActiveRecord::Schema.define(version: 2020_08_22_054516) do
+ActiveRecord::Schema.define(version: 2020_08_23_002835) do
 
   # These are extensions that must be enabled in order to support this database
   enable_extension "plpgsql"