diff options
Diffstat (limited to 'app/graphql/resolvers/concerns')
-rw-r--r-- | app/graphql/resolvers/concerns/issue_resolver_arguments.rb | 26 | ||||
-rw-r--r-- | app/graphql/resolvers/concerns/resolves_groups.rb | 34 | ||||
-rw-r--r-- | app/graphql/resolvers/concerns/resolves_pipelines.rb | 3 |
3 files changed, 61 insertions, 2 deletions
diff --git a/app/graphql/resolvers/concerns/issue_resolver_arguments.rb b/app/graphql/resolvers/concerns/issue_resolver_arguments.rb index 855877110e5..38c79ff52ac 100644 --- a/app/graphql/resolvers/concerns/issue_resolver_arguments.rb +++ b/app/graphql/resolvers/concerns/issue_resolver_arguments.rb @@ -55,8 +55,8 @@ module IssueResolverArguments description: 'Filter issues by the given issue types.', required: false argument :milestone_wildcard_id, ::Types::MilestoneWildcardIdEnum, - required: false, - description: 'Filter issues by milestone ID wildcard.' + required: false, + description: 'Filter issues by milestone ID wildcard.' argument :my_reaction_emoji, GraphQL::Types::String, required: false, description: 'Filter by reaction emoji applied by the current user. Wildcard values "NONE" and "ANY" are supported.' @@ -83,6 +83,7 @@ module IssueResolverArguments args[:attempt_project_search_optimizations] = true if args[:search].present? prepare_assignee_username_params(args) + prepare_release_tag_params(args) finder = IssuesFinder.new(current_user, args) @@ -93,6 +94,7 @@ module IssueResolverArguments params_not_mutually_exclusive(args, mutually_exclusive_assignee_username_args) params_not_mutually_exclusive(args, mutually_exclusive_milestone_args) params_not_mutually_exclusive(args.fetch(:not, {}), mutually_exclusive_milestone_args) + params_not_mutually_exclusive(args, mutually_exclusive_release_tag_args) validate_anonymous_search_access! if args[:search].present? super @@ -105,10 +107,30 @@ module IssueResolverArguments complexity end + + def accept_release_tag + argument :release_tag, [GraphQL::Types::String], + required: false, + description: "Release tag associated with the issue's milestone." + argument :release_tag_wildcard_id, Types::ReleaseTagWildcardIdEnum, + required: false, + description: 'Filter issues by release tag ID wildcard.' + end end private + def prepare_release_tag_params(args) + release_tag_wildcard = args.delete(:release_tag_wildcard_id) + return if release_tag_wildcard.blank? + + args[:release_tag] ||= release_tag_wildcard + end + + def mutually_exclusive_release_tag_args + [:release_tag, :release_tag_wildcard_id] + end + 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? diff --git a/app/graphql/resolvers/concerns/resolves_groups.rb b/app/graphql/resolvers/concerns/resolves_groups.rb new file mode 100644 index 00000000000..c451d4e7936 --- /dev/null +++ b/app/graphql/resolvers/concerns/resolves_groups.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +# Mixin for all resolver classes for type `Types::GroupType.connection_type`. +module ResolvesGroups + extend ActiveSupport::Concern + include LooksAhead + + def resolve_with_lookahead(**args) + apply_lookahead(resolve_groups(**args)) + end + + private + + # The resolver should implement this method. + def resolve_groups(**args) + raise NotImplementedError + end + + def preloads + { + contacts: [:contacts], + container_repositories_count: [:container_repositories], + custom_emoji: [:custom_emoji], + full_path: [:route], + organizations: [:organizations], + path: [:route], + dependency_proxy_blob_count: [:dependency_proxy_blobs], + dependency_proxy_blobs: [:dependency_proxy_blobs], + dependency_proxy_image_count: [:dependency_proxy_manifests], + dependency_proxy_image_ttl_policy: [:dependency_proxy_image_ttl_policy], + dependency_proxy_setting: [:dependency_proxy_setting] + } + end +end diff --git a/app/graphql/resolvers/concerns/resolves_pipelines.rb b/app/graphql/resolvers/concerns/resolves_pipelines.rb index 7fb0852b11e..1c01e5e0250 100644 --- a/app/graphql/resolvers/concerns/resolves_pipelines.rb +++ b/app/graphql/resolvers/concerns/resolves_pipelines.rb @@ -9,6 +9,9 @@ module ResolvesPipelines Types::Ci::PipelineStatusEnum, required: false, description: "Filter pipelines by their status." + argument :scope, ::Types::Ci::PipelineScopeEnum, + required: false, + description: 'Filter pipelines by scope.' argument :ref, GraphQL::Types::String, required: false, |