2018-12-13 14:17:19 -05:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
module Suggestions
|
|
|
|
class CreateService
|
|
|
|
def initialize(note)
|
|
|
|
@note = note
|
|
|
|
end
|
|
|
|
|
|
|
|
def execute
|
|
|
|
return unless @note.supports_suggestion?
|
|
|
|
|
2019-03-15 13:35:34 -04:00
|
|
|
suggestions = Gitlab::Diff::SuggestionsParser.parse(@note.note,
|
|
|
|
project: @note.project,
|
|
|
|
position: @note.position)
|
2018-12-13 14:17:19 -05:00
|
|
|
|
|
|
|
rows =
|
|
|
|
suggestions.map.with_index do |suggestion, index|
|
2019-03-15 13:35:34 -04:00
|
|
|
creation_params =
|
|
|
|
suggestion.to_hash.slice(:from_content,
|
|
|
|
:to_content,
|
|
|
|
:lines_above,
|
|
|
|
:lines_below)
|
2018-12-13 14:17:19 -05:00
|
|
|
|
2019-03-15 13:35:34 -04:00
|
|
|
creation_params.merge!(note_id: @note.id, relative_order: index)
|
2018-12-13 14:17:19 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
rows.in_groups_of(100, false) do |rows|
|
2021-11-15 10:10:57 -05:00
|
|
|
ApplicationRecord.legacy_bulk_insert('suggestions', rows) # rubocop:disable Gitlab/BulkInsert
|
2018-12-13 14:17:19 -05:00
|
|
|
end
|
2021-01-25 13:09:03 -05:00
|
|
|
|
2021-08-20 17:10:36 -04:00
|
|
|
Gitlab::UsageDataCounters::MergeRequestActivityUniqueCounter.track_add_suggestion_action(note: @note)
|
2018-12-13 14:17:19 -05:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|