summaryrefslogtreecommitdiff
path: root/app/graphql/mutations/merge_requests/set_milestone.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/graphql/mutations/merge_requests/set_milestone.rb')
-rw-r--r--app/graphql/mutations/merge_requests/set_milestone.rb30
1 files changed, 30 insertions, 0 deletions
diff --git a/app/graphql/mutations/merge_requests/set_milestone.rb b/app/graphql/mutations/merge_requests/set_milestone.rb
new file mode 100644
index 00000000000..707d6677952
--- /dev/null
+++ b/app/graphql/mutations/merge_requests/set_milestone.rb
@@ -0,0 +1,30 @@
+# frozen_string_literal: true
+
+module Mutations
+ module MergeRequests
+ class SetMilestone < Base
+ graphql_name 'MergeRequestSetMilestone'
+
+ argument :milestone_id,
+ GraphQL::ID_TYPE,
+ required: false,
+ loads: Types::MilestoneType,
+ description: <<~DESC
+ The milestone to assign to the merge request.
+ DESC
+
+ def resolve(project_path:, iid:, milestone: nil)
+ merge_request = authorized_find!(project_path: project_path, iid: iid)
+ project = merge_request.project
+
+ ::MergeRequests::UpdateService.new(project, current_user, milestone: milestone)
+ .execute(merge_request)
+
+ {
+ merge_request: merge_request,
+ errors: merge_request.errors.full_messages
+ }
+ end
+ end
+ end
+end