summaryrefslogtreecommitdiff
path: root/app/services/wiki_pages/event_create_service.rb
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-05-12 03:09:31 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-05-12 03:09:31 +0000
commit0e30d318bbe0e9e94885f865db3372e758c512bb (patch)
tree52e43494bbab87ebbe07669cddfdbf36298ae9fd /app/services/wiki_pages/event_create_service.rb
parentc6f0b221b71133792f2c9e5a026f3744c16d5ef5 (diff)
downloadgitlab-ce-0e30d318bbe0e9e94885f865db3372e758c512bb.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/services/wiki_pages/event_create_service.rb')
-rw-r--r--app/services/wiki_pages/event_create_service.rb30
1 files changed, 30 insertions, 0 deletions
diff --git a/app/services/wiki_pages/event_create_service.rb b/app/services/wiki_pages/event_create_service.rb
new file mode 100644
index 00000000000..18a45d057a9
--- /dev/null
+++ b/app/services/wiki_pages/event_create_service.rb
@@ -0,0 +1,30 @@
+# frozen_string_literal: true
+
+module WikiPages
+ class EventCreateService
+ # @param [User] author The event author
+ def initialize(author)
+ raise ArgumentError, 'author must not be nil' unless author
+
+ @author = author
+ end
+
+ def execute(slug, page, action)
+ return ServiceResponse.success(message: 'No event created as `wiki_events` feature is disabled') unless ::Feature.enabled?(:wiki_events)
+
+ event = Event.transaction do
+ wiki_page_meta = WikiPage::Meta.find_or_create(slug, page)
+
+ ::EventCreateService.new.wiki_event(wiki_page_meta, author, action)
+ end
+
+ ServiceResponse.success(payload: { event: event })
+ rescue ::EventCreateService::IllegalActionError, ::ActiveRecord::ActiveRecordError => e
+ ServiceResponse.error(message: e.message, payload: { error: e })
+ end
+
+ private
+
+ attr_reader :author
+ end
+end