summaryrefslogtreecommitdiff
path: root/app/services/issuable_links/create_service.rb
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-04-20 10:00:54 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2022-04-20 10:00:54 +0000
commit3cccd102ba543e02725d247893729e5c73b38295 (patch)
treef36a04ec38517f5deaaacb5acc7d949688d1e187 /app/services/issuable_links/create_service.rb
parent205943281328046ef7b4528031b90fbda70c75ac (diff)
downloadgitlab-ce-3cccd102ba543e02725d247893729e5c73b38295.tar.gz
Add latest changes from gitlab-org/gitlab@14-10-stable-eev14.10.0-rc42
Diffstat (limited to 'app/services/issuable_links/create_service.rb')
-rw-r--r--app/services/issuable_links/create_service.rb26
1 files changed, 20 insertions, 6 deletions
diff --git a/app/services/issuable_links/create_service.rb b/app/services/issuable_links/create_service.rb
index 802260c8fae..0887f04760c 100644
--- a/app/services/issuable_links/create_service.rb
+++ b/app/services/issuable_links/create_service.rb
@@ -2,8 +2,6 @@
module IssuableLinks
class CreateService < BaseService
- include IncidentManagement::UsageData
-
attr_reader :issuable, :current_user, :params
def initialize(issuable, user, params)
@@ -25,7 +23,7 @@ module IssuableLinks
end
@errors = []
- create_links
+ references = create_links
if @errors.present?
return error(@errors.join('. '), 422)
@@ -33,7 +31,7 @@ module IssuableLinks
track_event
- success
+ success(created_references: references)
end
# rubocop: disable CodeReuse/ActiveRecord
@@ -66,15 +64,19 @@ module IssuableLinks
end
def link_issuables(target_issuables)
- target_issuables.each do |referenced_object|
+ target_issuables.map do |referenced_object|
link = relate_issuables(referenced_object)
- unless link.valid?
+ if link.valid?
+ after_create_for(link)
+ else
@errors << _("%{ref} cannot be added: %{error}") % {
ref: referenced_object.to_reference,
error: link.errors.messages.values.flatten.to_sentence
}
end
+
+ link
end
end
@@ -142,6 +144,18 @@ module IssuableLinks
def set_link_type(_link)
# no-op
end
+
+ # Override on child classes to perform
+ # actions when the service is executed.
+ def track_event
+ # no-op
+ end
+
+ # Override on child classes to
+ # perform actions for each object created.
+ def after_create_for(_link)
+ # no-op
+ end
end
end