Commit 24716da3 authored by Alexandru Croitor's avatar Alexandru Croitor

Extract common no_quote_columns code

Common code for determining columns that do not need
to be quoted in bulk insers based on each model class.

This change is to be used in specific mentions migration
on each of the models: design, snippet,
commit(would override this method), issue, merge request.
parent 6d0765f6
......@@ -47,6 +47,10 @@ describe Gitlab::BackgroundMigration::UserMentions::CreateResourceUserMention do
title_html: "epic title @#{author.username}", description: description_mentions)
end
it 'has correct no_quote_columns' do
expect(Gitlab::BackgroundMigration::UserMentions::Models::Epic.no_quote_columns).to match([:note_id, :epic_id])
end
it 'migrates mentions' do
join = MigrateEpicMentionsToDb::JOIN
conditions = MigrateEpicMentionsToDb::QUERY_CONDITIONS
......
......@@ -24,14 +24,11 @@ module Gitlab
mentions << record.build_mention_values
end
no_quote_columns = [:note_id]
no_quote_columns << resource_user_mention_model.resource_foreign_key
Gitlab::Database.bulk_insert(
resource_user_mention_model.table_name,
mentions,
return_ids: true,
disable_quote: no_quote_columns,
disable_quote: resource_model.no_quote_columns,
on_conflict: :do_nothing
)
end
......
# frozen_string_literal: true
module Gitlab
module BackgroundMigration
module UserMentions
module Models
# Extract common no_quote_columns method used in determining the columns that do not need
# to be quoted for corresponding models
module MentionableMigrationMethods
extend ::ActiveSupport::Concern
class_methods do
def no_quote_columns
[
:note_id,
user_mention_model.resource_foreign_key
]
end
end
end
end
end
end
end
......@@ -8,6 +8,7 @@ module Gitlab
class Epic < ActiveRecord::Base
include IsolatedMentionable
include CacheMarkdownField
include MentionableMigrationMethods
attr_mentionable :title, pipeline: :single_line
attr_mentionable :description
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment