1# frozen_string_literal: true
2
3module IssuableLinks
4  class DestroyService < BaseService
5    include IncidentManagement::UsageData
6
7    attr_reader :link, :current_user
8
9    def initialize(link, user)
10      @link = link
11      @current_user = user
12    end
13
14    def execute
15      return error(not_found_message, 404) unless permission_to_remove_relation?
16
17      remove_relation
18      after_destroy
19
20      success(message: 'Relation was removed')
21    end
22
23    private
24
25    def after_destroy
26      create_notes
27      track_event
28    end
29
30    def remove_relation
31      link.destroy!
32    end
33
34    def not_found_message
35      'No Issue Link found'
36    end
37  end
38end
39