summaryrefslogtreecommitdiff
path: root/app/graphql/types/user_merge_request_interaction_type.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/graphql/types/user_merge_request_interaction_type.rb')
-rw-r--r--app/graphql/types/user_merge_request_interaction_type.rb47
1 files changed, 47 insertions, 0 deletions
diff --git a/app/graphql/types/user_merge_request_interaction_type.rb b/app/graphql/types/user_merge_request_interaction_type.rb
new file mode 100644
index 00000000000..5ff0d79f13e
--- /dev/null
+++ b/app/graphql/types/user_merge_request_interaction_type.rb
@@ -0,0 +1,47 @@
+# frozen_string_literal: true
+
+module Types
+ class UserMergeRequestInteractionType < BaseObject
+ graphql_name 'UserMergeRequestInteraction'
+ description <<~MD
+ Information about a merge request given a specific user.
+
+ This object has two parts to its state: a `User` and a `MergeRequest`. All
+ fields relate to interactions between the two entities.
+ MD
+
+ authorize :read_merge_request
+
+ field :can_merge,
+ type: ::GraphQL::BOOLEAN_TYPE,
+ null: false,
+ calls_gitaly: true,
+ method: :can_merge?,
+ description: 'Whether this user can merge this merge request.'
+
+ field :can_update,
+ type: ::GraphQL::BOOLEAN_TYPE,
+ null: false,
+ method: :can_update?,
+ description: 'Whether this user can update this merge request.'
+
+ field :review_state,
+ ::Types::MergeRequestReviewStateEnum,
+ null: true,
+ description: 'The state of the review by this user.'
+
+ field :reviewed,
+ type: ::GraphQL::BOOLEAN_TYPE,
+ null: false,
+ method: :reviewed?,
+ description: 'Whether this user has provided a review for this merge request.'
+
+ field :approved,
+ type: ::GraphQL::BOOLEAN_TYPE,
+ null: false,
+ method: :approved?,
+ description: 'Whether this user has approved this merge request.'
+ end
+end
+
+::Types::UserMergeRequestInteractionType.prepend_if_ee('EE::Types::UserMergeRequestInteractionType')