summaryrefslogtreecommitdiff
path: root/app/graphql/mutations/merge_requests/update.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/graphql/mutations/merge_requests/update.rb')
-rw-r--r--app/graphql/mutations/merge_requests/update.rb39
1 files changed, 39 insertions, 0 deletions
diff --git a/app/graphql/mutations/merge_requests/update.rb b/app/graphql/mutations/merge_requests/update.rb
new file mode 100644
index 00000000000..b583fdfca9b
--- /dev/null
+++ b/app/graphql/mutations/merge_requests/update.rb
@@ -0,0 +1,39 @@
+# frozen_string_literal: true
+
+module Mutations
+ module MergeRequests
+ class Update < Base
+ graphql_name 'MergeRequestUpdate'
+
+ description 'Update attributes of a merge request'
+
+ argument :title, GraphQL::STRING_TYPE,
+ required: false,
+ description: copy_field_description(Types::MergeRequestType, :title)
+
+ argument :target_branch, GraphQL::STRING_TYPE,
+ required: false,
+ description: copy_field_description(Types::MergeRequestType, :target_branch)
+
+ argument :description, GraphQL::STRING_TYPE,
+ required: false,
+ description: copy_field_description(Types::MergeRequestType, :description)
+
+ def resolve(args)
+ merge_request = authorized_find!(args.slice(:project_path, :iid))
+ attributes = args.slice(:title, :description, :target_branch).compact
+
+ ::MergeRequests::UpdateService
+ .new(merge_request.project, current_user, attributes)
+ .execute(merge_request)
+
+ errors = errors_on_object(merge_request)
+
+ {
+ merge_request: merge_request.reset,
+ errors: errors
+ }
+ end
+ end
+ end
+end