diff options
Diffstat (limited to 'app/graphql/resolvers/user_merge_requests_resolver.rb')
-rw-r--r-- | app/graphql/resolvers/user_merge_requests_resolver.rb | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/app/graphql/resolvers/user_merge_requests_resolver.rb b/app/graphql/resolvers/user_merge_requests_resolver.rb deleted file mode 100644 index b0d6e159f73..00000000000 --- a/app/graphql/resolvers/user_merge_requests_resolver.rb +++ /dev/null @@ -1,68 +0,0 @@ -# frozen_string_literal: true - -module Resolvers - class UserMergeRequestsResolver < MergeRequestsResolver - include ResolvesProject - - argument :project_path, GraphQL::STRING_TYPE, - required: false, - description: 'The full-path of the project the authored merge requests should be in. Incompatible with projectId.' - - argument :project_id, GraphQL::ID_TYPE, - required: false, - description: 'The global ID of the project the authored merge requests should be in. Incompatible with projectPath.' - - attr_reader :project - alias_method :user, :synchronized_object - - def ready?(project_id: nil, project_path: nil, **args) - return early_return unless can_read_profile? - - if project_id || project_path - load_project(project_path, project_id) - return early_return unless can_read_project? - elsif args[:iids].present? - raise ::Gitlab::Graphql::Errors::ArgumentError, - 'iids requires projectPath or projectId' - end - - super(**args) - end - - def resolve(**args) - prepare_args(args) - key = :"#{user_role}_id" - super(key => user.id, **args) - end - - def user_role - raise NotImplementedError - end - - private - - def can_read_profile? - Ability.allowed?(current_user, :read_user_profile, user) - end - - def can_read_project? - Ability.allowed?(current_user, :read_merge_request, project) - end - - def load_project(project_path, project_id) - @project = resolve_project(full_path: project_path, project_id: project_id) - @project = @project.sync if @project.respond_to?(:sync) - end - - def no_results_possible?(args) - some_argument_is_empty?(args) - end - - # These arguments are handled in load_project, and should not be passed to - # the finder directly. - def prepare_args(args) - args.delete(:project_id) - args.delete(:project_path) - end - end -end |