28 lines
932 B
Ruby
28 lines
932 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",
|
|
%w[user_id post_action_type_id post_id targets_topic],
|
|
name: "idx_unique_actions",
|
|
unique: true,
|
|
where: "deleted_at IS NULL"
|
|
end
|
|
end
|