FIX: Migrate topic_users.bookmarked to false when it is incorrectly true (#10211)
Follow up to https://github.com/discourse/discourse/pull/10188/files There are still TopicUser records where bookmarked is true even though there are no Bookmark or PostAction records with the type of bookmark for the associated topic and user. This migration corrects this issue by setting bookmarked to false for these cases.
This commit is contained in:
parent
37f7e41e60
commit
9a2955d471
|
@ -0,0 +1,19 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class FixTopicUsersBookmarkedColumnThatShouldBeFalse < ActiveRecord::Migration[6.0]
|
||||
def up
|
||||
# post_action_type_id 1 is bookmark
|
||||
sql = <<~SQL
|
||||
UPDATE topic_users SET bookmarked = FALSE WHERE ID IN (
|
||||
SELECT DISTINCT topic_users.id FROM topic_users
|
||||
LEFT JOIN bookmarks ON bookmarks.topic_id = topic_users.topic_id AND bookmarks.user_id = topic_users.user_id
|
||||
LEFT JOIN post_actions ON post_actions.user_id = topic_users.user_id AND post_actions.post_action_type_id = 1 AND post_actions.post_id IN (SELECT id FROM posts WHERE posts.topic_id = topic_users.topic_id)
|
||||
WHERE topic_users.bookmarked = true AND (bookmarks.id IS NULL AND post_actions.id IS NULL))
|
||||
SQL
|
||||
DB.exec(sql)
|
||||
end
|
||||
|
||||
def down
|
||||
raise ActiveRecord::IrreversibleMigration
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue