discourse/db/migrate/20140815183851_fix_index_on_post_actions.rb
Sam Saffron 30990006a9 DEV: enable frozen string literal on all files
This reduces chances of errors where consumers of strings mutate inputs
and reduces memory usage of the app.

Test suite passes now, but there may be some stuff left, so we will run
a few sites on a branch prior to merging
2019-05-13 09:31:32 +08:00

29 lines
966 B
Ruby

# frozen_string_literal: true
class FixIndexOnPostActions < ActiveRecord::Migration[4.2]
def change
execute 'UPDATE post_actions SET targets_topic = false WHERE targets_topic IS NULL'
change_column :post_actions, :targets_topic, :boolean, default: false, null: false
execute '
DELETE FROM post_actions pa
USING post_actions x
WHERE pa.user_id = x.user_id AND
pa.post_action_type_id = x.post_action_type_id AND
pa.post_id = x.post_id AND
pa.targets_topic = x.targets_topic AND
pa.id < x.id AND
pa.deleted_at IS NULL AND
x.deleted_at IS NULL
'
remove_index "post_actions", name: "idx_unique_actions"
add_index "post_actions",
["user_id", "post_action_type_id",
"post_id", "targets_topic"],
name: "idx_unique_actions",
unique: true,
where: 'deleted_at IS NULL'
end
end