Class: Labels::TransferService

Inherits:
Object
  • Object
show all
Defined in:
app/services/labels/transfer_service.rb

Instance Method Summary collapse

Constructor Details

#initialize(current_user, old_group, project) ⇒ TransferService

Returns a new instance of TransferService.



9
10
11
12
13
# File 'app/services/labels/transfer_service.rb', line 9

def initialize(current_user, old_group, project)
  @current_user = current_user
  @old_group = old_group
  @project = project
end

Instance Method Details

#executeObject



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'app/services/labels/transfer_service.rb', line 15

def execute
  return unless old_group.present?

  # rubocop: disable CodeReuse/ActiveRecord
  link_ids = group_labels_applied_to_issues.pluck("label_links.id") +
             group_labels_applied_to_merge_requests.pluck("label_links.id")
  # rubocop: disable CodeReuse/ActiveRecord

  Label.transaction do
    labels_to_transfer.find_each do |label|
      new_label_id = find_or_create_label!(label)

      next if new_label_id == label.id

      update_label_links(link_ids, old_label_id: label.id, new_label_id: new_label_id)
      update_label_priorities(old_label_id: label.id, new_label_id: new_label_id)
    end
  end
end