From f00e28206727da7a80d7a415cf825e746fd8d186 Mon Sep 17 00:00:00 2001
From: Daniel Waterworth <me@danielwaterworth.com>
Date: Thu, 26 May 2022 11:58:15 -0500
Subject: [PATCH] FIX: Delete extraneous topic bookmarks (#16926)

Otherwise the migration can fail

Co-authored-by: David Taylor <david@taylorhq.com>
---
 ...backfill_polymorphic_bookmarks_and_make_default.rb | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/db/migrate/20220512011522_backfill_polymorphic_bookmarks_and_make_default.rb b/db/migrate/20220512011522_backfill_polymorphic_bookmarks_and_make_default.rb
index f35aaaefe17..d3f5806c4a6 100644
--- a/db/migrate/20220512011522_backfill_polymorphic_bookmarks_and_make_default.rb
+++ b/db/migrate/20220512011522_backfill_polymorphic_bookmarks_and_make_default.rb
@@ -14,6 +14,17 @@ class BackfillPolymorphicBookmarksAndMakeDefault < ActiveRecord::Migration[7.0]
       WHERE NOT bookmarks.for_topic AND bookmarkable_id IS NULL
     SQL
 
+    DB.exec(<<~SQL)
+      DELETE FROM bookmarks
+      WHERE id NOT IN (
+        SELECT MIN(bookmarks.id)
+        FROM bookmarks
+        INNER JOIN posts ON bookmarks.post_id = posts.id
+        WHERE bookmarks.for_topic
+        GROUP BY (bookmarks.user_id, posts.topic_id)
+      )
+    SQL
+
     DB.exec(<<~SQL)
       UPDATE bookmarks
       SET bookmarkable_id = posts.topic_id, bookmarkable_type = 'Topic'