diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-04-20 23:50:22 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-04-20 23:50:22 +0000 |
commit | 9dc93a4519d9d5d7be48ff274127136236a3adb3 (patch) | |
tree | 70467ae3692a0e35e5ea56bcb803eb512a10bedb /app/graphql/resolvers/concerns/issue_resolver_arguments.rb | |
parent | 4b0f34b6d759d6299322b3a54453e930c6121ff0 (diff) | |
download | gitlab-ce-9dc93a4519d9d5d7be48ff274127136236a3adb3.tar.gz |
Add latest changes from gitlab-org/gitlab@13-11-stable-eev13.11.0-rc43
Diffstat (limited to 'app/graphql/resolvers/concerns/issue_resolver_arguments.rb')
-rw-r--r-- | app/graphql/resolvers/concerns/issue_resolver_arguments.rb | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/app/graphql/resolvers/concerns/issue_resolver_arguments.rb b/app/graphql/resolvers/concerns/issue_resolver_arguments.rb index 84b0dafe213..0ff3997f3bc 100644 --- a/app/graphql/resolvers/concerns/issue_resolver_arguments.rb +++ b/app/graphql/resolvers/concerns/issue_resolver_arguments.rb @@ -12,10 +12,10 @@ module IssueResolverArguments argument :iids, [GraphQL::STRING_TYPE], required: false, description: 'List of IIDs of issues. For example, [1, 2].' - argument :label_name, GraphQL::STRING_TYPE.to_list_type, + argument :label_name, [GraphQL::STRING_TYPE, null: true], required: false, description: 'Labels applied to this issue.' - argument :milestone_title, GraphQL::STRING_TYPE.to_list_type, + argument :milestone_title, [GraphQL::STRING_TYPE, null: true], required: false, description: 'Milestone applied to this issue.' argument :author_username, GraphQL::STRING_TYPE, @@ -23,7 +23,8 @@ module IssueResolverArguments description: 'Username of the author of the issue.' argument :assignee_username, GraphQL::STRING_TYPE, required: false, - description: 'Username of a user assigned to the issue.' + description: 'Username of a user assigned to the issue.', + deprecated: { reason: 'Use `assigneeUsernames`', milestone: '13.11' } argument :assignee_usernames, [GraphQL::STRING_TYPE], required: false, description: 'Usernames of users assigned to the issue.' @@ -55,6 +56,10 @@ module IssueResolverArguments as: :issue_types, description: 'Filter issues by the given issue types.', required: false + argument :not, Types::Issues::NegatedIssueFilterInputType, + description: 'List of negated params.', + prepare: ->(negated_args, ctx) { negated_args.to_h }, + required: false end def resolve_with_lookahead(**args) @@ -69,11 +74,22 @@ module IssueResolverArguments args[:iids] ||= [args.delete(:iid)].compact if args[:iid] args[:attempt_project_search_optimizations] = true if args[:search].present? + prepare_assignee_username_params(args) + finder = IssuesFinder.new(current_user, args) continue_issue_resolve(parent, finder, **args) end + def ready?(**args) + if args.slice(*mutually_exclusive_assignee_username_args).compact.size > 1 + arg_str = mutually_exclusive_assignee_username_args.map { |x| x.to_s.camelize(:lower) }.join(', ') + raise Gitlab::Graphql::Errors::ArgumentError, "only one of [#{arg_str}] arguments is allowed at the same time." + end + + super + end + class_methods do def resolver_complexity(args, child_complexity:) complexity = super @@ -82,4 +98,15 @@ module IssueResolverArguments complexity end end + + private + + def prepare_assignee_username_params(args) + args[:assignee_username] = args.delete(:assignee_usernames) if args[:assignee_usernames].present? + args[:not][:assignee_username] = args[:not].delete(:assignee_usernames) if args.dig(:not, :assignee_usernames).present? + end + + def mutually_exclusive_assignee_username_args + [:assignee_usernames, :assignee_username] + end end |