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
# 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|
    Gitlab::Database.bulk_insert('suggestions', rows) # rubocop:disable Gitlab/BulkInsert
  end
end