File: linked_items.rb

package info (click to toggle)
gitlab 17.6.5-19
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 629,368 kB
  • sloc: ruby: 1,915,304; javascript: 557,307; sql: 60,639; xml: 6,509; sh: 4,567; makefile: 1,239; python: 406
file content (26 lines) | stat: -rw-r--r-- 771 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# frozen_string_literal: true

module WorkItems
  module Callbacks
    class LinkedItems < Base
      def after_save_commit
        return unless params.present? && params.key?(:work_items_ids)
        return unless has_permission?(:set_work_item_metadata)

        execute_linked_items_service(params[:work_items_ids], params[:link_type])
      end

      private

      def execute_linked_items_service(item_ids, link_type)
        items_to_link = WorkItem.id_in(item_ids)

        result = ::WorkItems::RelatedWorkItemLinks::CreateService
                  .new(work_item, current_user, { target_issuable: items_to_link, link_type: link_type })
                  .execute

        raise_error(result[:message]) if result[:status] == :error
      end
    end
  end
end