summaryrefslogtreecommitdiff
path: root/lib/gitlab/background_migration/fix_promoted_epics_discussion_ids.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/background_migration/fix_promoted_epics_discussion_ids.rb')
-rw-r--r--lib/gitlab/background_migration/fix_promoted_epics_discussion_ids.rb32
1 files changed, 3 insertions, 29 deletions
diff --git a/lib/gitlab/background_migration/fix_promoted_epics_discussion_ids.rb b/lib/gitlab/background_migration/fix_promoted_epics_discussion_ids.rb
index 8c910f66fc8..77c317741e9 100644
--- a/lib/gitlab/background_migration/fix_promoted_epics_discussion_ids.rb
+++ b/lib/gitlab/background_migration/fix_promoted_epics_discussion_ids.rb
@@ -12,35 +12,9 @@ module Gitlab
end
def perform(discussion_ids)
- discussion_values = build_discussion_values(discussion_ids)
-
- update_notes_discussion_ids(discussion_values) if discussion_values
- end
-
- def build_discussion_values(discussion_ids)
- discussion_ids.map do |discussion_id|
- new_id = generate_id(discussion_id)
-
- ActiveRecord::Base.sanitize_sql(["(?, ?)", discussion_id, new_id])
- end.join(', ')
- end
-
- def update_notes_discussion_ids(values)
- sql = <<-SQL.squish
- UPDATE notes SET discussion_id = v.new_discussion_id
- FROM (
- VALUES
- #{values}
- ) AS v(old_discussion_id, new_discussion_id)
- WHERE notes.discussion_id = v.old_discussion_id
- AND notes.noteable_type = 'Epic'
- SQL
-
- Note.connection.execute(sql)
- end
-
- def generate_id(id)
- Digest::SHA1.hexdigest([:discussion, 'epic', id, SecureRandom.hex].join("-"))
+ Note.where(noteable_type: 'Epic')
+ .where(discussion_id: discussion_ids)
+ .update_all("discussion_id=MD5(discussion_id)||substring(discussion_id from 1 for 8)")
end
end
end