discourse/db/migrate/20191108000414_add_unique_index_to_drafts.rb

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

27 lines
606 B
Ruby
Raw Normal View History

# frozen_string_literal: true
class AddUniqueIndexToDrafts < ActiveRecord::Migration[6.0]
def up
execute <<~SQL
DELETE FROM drafts d1
USING (
SELECT MAX(id) as id, draft_key, user_id
FROM drafts
GROUP BY draft_key, user_id
HAVING COUNT(*) > 1
) d2
WHERE
d1.draft_key = d2.draft_key AND
d1.user_id = d2.user_id AND
d1.id <> d2.id
SQL
remove_index :drafts, %i[user_id draft_key]
add_index :drafts, %i[user_id draft_key], unique: true
end
def down
raise ActiveRecord::IrreversibleMigration
end
end