class AddUniqueIndexToTagImplications < ActiveRecord::Migration[8.0]
  def up
    execute <<~SQL
      DELETE
        ti1
      FROM
        tag_implications ti1
        INNER JOIN
          tag_implications ti2
          ON
            ti1.tag_id = ti2.tag_id
            AND ti1.parent_tag_id = ti2.parent_tag_id
            AND ti1.id > ti2.id
      ;
    SQL

    add_index :tag_implications, [:tag_id, :parent_tag_id],
              unique: true,
              name: 'index_tag_implications_on_tag_id_and_parent_tag_id'
  end

  def down
    # NOTE: 重複削除は復元されなぃ．
    remove_index :tag_implications,
                 name: 'index_tag_implications_on_tag_id_and_parent_tag_id'
  end
end
