Fix: #540 emoji_reactionsテーブルのuriカラムへのインデックス設定時、重複を削除する処理 (#543)

This commit is contained in:
KMY(雪あすか) 2024-02-14 09:58:45 +09:00 committed by GitHub
parent eb9d8a8679
commit f8b32facb4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 28 additions and 9 deletions

View file

@ -0,0 +1,28 @@
# frozen_string_literal: true
class FixUriIndexToEmojiReactions < ActiveRecord::Migration[7.1]
disable_ddl_transaction!
class EmojiReaction < ApplicationRecord
end
def up
# Remove duplications (very old kmyblue code [2023/03-04] maybe made some duplications)
duplications = EmojiReaction.where('uri IN (SELECT uri FROM emoji_reactions GROUP BY uri HAVING COUNT(*) > 1)')
.to_a.group_by(&:uri).to_h
if duplications.any?
EmojiReaction.transaction do
duplications.each do |h|
h[1].drop(1).each(&:destroy)
end
end
end
add_index :emoji_reactions, :uri, unique: true, algorithm: :concurrently
end
def down
remove_index :emoji_reactions, :uri
end
end