Class: Suggestions::CreateService

Inherits:
Object
  • Object
show all
Defined in:
app/services/suggestions/create_service.rb

Instance Method Summary collapse

Constructor Details

#initialize(note) ⇒ CreateService

Returns a new instance of CreateService.



5
6
7
# File 'app/services/suggestions/create_service.rb', line 5

def initialize(note)
  @note = note
end

Instance Method Details

#executeObject



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'app/services/suggestions/create_service.rb', line 9

def execute
  return unless @note.supports_suggestion?

  suggestions = Gitlab::Diff::SuggestionsParser.parse(
    @note.note,
    project: @note.project,
    position: @note.position
  )

  rows = suggestions.map.with_index do |suggestion, index|
    creation_params = suggestion.to_hash.slice(
      :from_content,
      :to_content,
      :lines_above,
      :lines_below
    )

    creation_params.merge!(note_id: @note.id, relative_order: index)
  end

  rows.in_groups_of(100, false) do |rows|
    ApplicationRecord.legacy_bulk_insert('suggestions', rows) # rubocop:disable Gitlab/BulkInsert
  end

  Gitlab::UsageDataCounters::MergeRequestActivityUniqueCounter.track_add_suggestion_action(note: @note)
end