diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-07-20 12:55:51 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-07-20 12:55:51 +0300 |
commit | e8d2c2579383897a1dd7f9debd359abe8ae8373d (patch) | |
tree | c42be41678c2586d49a75cabce89322082698334 /app/graphql/resolvers | |
parent | fc845b37ec3a90aaa719975f607740c22ba6a113 (diff) |
Add latest changes from gitlab-org/gitlab@14-1-stable-eev14.1.0-rc42
Diffstat (limited to 'app/graphql/resolvers')
11 files changed, 67 insertions, 17 deletions
diff --git a/app/graphql/resolvers/alert_management/alert_resolver.rb b/app/graphql/resolvers/alert_management/alert_resolver.rb index 008641ed88a..62744e719da 100644 --- a/app/graphql/resolvers/alert_management/alert_resolver.rb +++ b/app/graphql/resolvers/alert_management/alert_resolver.rb @@ -12,7 +12,7 @@ module Resolvers argument :statuses, [Types::AlertManagement::StatusEnum], as: :status, required: false, - description: 'Alerts with the specified statues. For example, [TRIGGERED].' + description: 'Alerts with the specified statues. For example, `[TRIGGERED]`.' argument :sort, Types::AlertManagement::AlertSortEnum, description: 'Sort alerts by this criteria.', diff --git a/app/graphql/resolvers/alert_management/integrations_resolver.rb b/app/graphql/resolvers/alert_management/integrations_resolver.rb index cb7e73c2d1a..a97650e95d9 100644 --- a/app/graphql/resolvers/alert_management/integrations_resolver.rb +++ b/app/graphql/resolvers/alert_management/integrations_resolver.rb @@ -34,7 +34,7 @@ module Resolvers def prometheus_integrations return [] unless prometheus_integrations_allowed? - Array(project.prometheus_service) + Array(project.prometheus_integration) end def http_integrations @@ -54,7 +54,7 @@ module Resolvers def expected_integration_types [].tap do |types| types << ::AlertManagement::HttpIntegration if http_integrations_allowed? - types << ::PrometheusService if prometheus_integrations_allowed? + types << ::Integrations::Prometheus if prometheus_integrations_allowed? end end end diff --git a/app/graphql/resolvers/board_list_issues_resolver.rb b/app/graphql/resolvers/board_list_issues_resolver.rb index dac93b91469..25fb35ec74b 100644 --- a/app/graphql/resolvers/board_list_issues_resolver.rb +++ b/app/graphql/resolvers/board_list_issues_resolver.rb @@ -16,7 +16,7 @@ module Resolvers filter_params = item_filters(args[:filters]).merge(board_id: list.board.id, id: list.id) service = ::Boards::Issues::ListService.new(list.board.resource_parent, context[:current_user], filter_params) - offset_pagination(service.execute) + service.execute end # https://gitlab.com/gitlab-org/gitlab/-/issues/235681 diff --git a/app/graphql/resolvers/ci/config_resolver.rb b/app/graphql/resolvers/ci/config_resolver.rb index 252c9d3acf0..f2e33251b9c 100644 --- a/app/graphql/resolvers/ci/config_resolver.rb +++ b/app/graphql/resolvers/ci/config_resolver.rb @@ -18,6 +18,10 @@ module Resolvers required: true, description: 'The project of the CI config.' + argument :sha, GraphQL::STRING_TYPE, + required: false, + description: "Sha for the pipeline." + argument :content, GraphQL::STRING_TYPE, required: true, description: "Contents of `.gitlab-ci.yml`." @@ -26,11 +30,11 @@ module Resolvers required: false, description: 'Run pipeline creation simulation, or only do static check.' - def resolve(project_path:, content:, dry_run: false) + def resolve(project_path:, content:, sha: nil, dry_run: false) project = authorized_find!(project_path: project_path) result = ::Gitlab::Ci::Lint - .new(project: project, current_user: context[:current_user]) + .new(project: project, current_user: context[:current_user], sha: sha) .validate(content, dry_run: dry_run) response(result).merge(merged_yaml: result.merged_yaml) diff --git a/app/graphql/resolvers/ci/job_token_scope_resolver.rb b/app/graphql/resolvers/ci/job_token_scope_resolver.rb new file mode 100644 index 00000000000..ca76a7b94fc --- /dev/null +++ b/app/graphql/resolvers/ci/job_token_scope_resolver.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +module Resolvers + module Ci + class JobTokenScopeResolver < BaseResolver + include Gitlab::Graphql::Authorize::AuthorizeResource + + authorize :admin_project + description 'Container for resources that can be accessed by a CI job token from the current project. Null if job token scope setting is disabled.' + type ::Types::Ci::JobTokenScopeType, null: true + + def resolve + authorize!(object) + + return unless object.ci_job_token_scope_enabled? + + ::Ci::JobToken::Scope.new(object) + end + end + end +end diff --git a/app/graphql/resolvers/ci/runners_resolver.rb b/app/graphql/resolvers/ci/runners_resolver.rb index 3ad1e2780dd..5074a248e18 100644 --- a/app/graphql/resolvers/ci/runners_resolver.rb +++ b/app/graphql/resolvers/ci/runners_resolver.rb @@ -3,6 +3,8 @@ module Resolvers module Ci class RunnersResolver < BaseResolver + include LooksAhead + type Types::Ci::RunnerType.connection_type, null: true argument :status, ::Types::Ci::RunnerStatusEnum, @@ -25,10 +27,11 @@ module Resolvers required: false, description: 'Sort order of results.' - def resolve(**args) - ::Ci::RunnersFinder - .new(current_user: current_user, params: runners_finder_params(args)) - .execute + def resolve_with_lookahead(**args) + apply_lookahead( + ::Ci::RunnersFinder + .new(current_user: current_user, params: runners_finder_params(args)) + .execute) end private @@ -39,7 +42,10 @@ module Resolvers type_type: params[:type], tag_name: params[:tag_list], search: params[:search], - sort: params[:sort]&.to_s + sort: params[:sort]&.to_s, + preload: { + tag_name: node_selection&.selects?(:tag_list) + } }.compact end end diff --git a/app/graphql/resolvers/ci/template_resolver.rb b/app/graphql/resolvers/ci/template_resolver.rb index dd910116544..7f5a1a486d7 100644 --- a/app/graphql/resolvers/ci/template_resolver.rb +++ b/app/graphql/resolvers/ci/template_resolver.rb @@ -6,7 +6,7 @@ module Resolvers type Types::Ci::TemplateType, null: true argument :name, GraphQL::STRING_TYPE, required: true, - description: 'Name of the CI/CD template to search for.' + description: 'Name of the CI/CD template to search for. Template must be formatted as `Name.gitlab-ci.yml`.' alias_method :project, :object diff --git a/app/graphql/resolvers/concerns/issue_resolver_arguments.rb b/app/graphql/resolvers/concerns/issue_resolver_arguments.rb index aa08d62c6a5..c24f4dedc0e 100644 --- a/app/graphql/resolvers/concerns/issue_resolver_arguments.rb +++ b/app/graphql/resolvers/concerns/issue_resolver_arguments.rb @@ -11,7 +11,7 @@ module IssueResolverArguments description: 'IID of the issue. For example, "1".' argument :iids, [GraphQL::STRING_TYPE], required: false, - description: 'List of IIDs of issues. For example, ["1", "2"].' + description: 'List of IIDs of issues. For example, `["1", "2"]`.' argument :label_name, [GraphQL::STRING_TYPE, null: true], required: false, description: 'Labels applied to this issue.' diff --git a/app/graphql/resolvers/issues_resolver.rb b/app/graphql/resolvers/issues_resolver.rb index 93e679b2d0c..2017eb7decd 100644 --- a/app/graphql/resolvers/issues_resolver.rb +++ b/app/graphql/resolvers/issues_resolver.rb @@ -15,6 +15,7 @@ module Resolvers type Types::IssueType.connection_type, null: true NON_STABLE_CURSOR_SORTS = %i[priority_asc priority_desc + popularity_asc popularity_desc label_priority_asc label_priority_desc milestone_due_asc milestone_due_desc].freeze diff --git a/app/graphql/resolvers/milestones_resolver.rb b/app/graphql/resolvers/milestones_resolver.rb index 1241b41501d..4fa4c939a23 100644 --- a/app/graphql/resolvers/milestones_resolver.rb +++ b/app/graphql/resolvers/milestones_resolver.rb @@ -25,14 +25,27 @@ module Resolvers required: false, description: 'A date that the milestone contains.' + argument :sort, Types::MilestoneSortEnum, + description: 'Sort milestones by this criteria.', + required: false, + default_value: :due_date_asc + type Types::MilestoneType.connection_type, null: true + NON_STABLE_CURSOR_SORTS = %i[expired_last_due_date_asc expired_last_due_date_desc].freeze + def resolve(**args) validate_timeframe_params!(args) authorize! - MilestonesFinder.new(milestones_finder_params(args)).execute + milestones = MilestonesFinder.new(milestones_finder_params(args)).execute + + if non_stable_cursor_sort?(args[:sort]) + offset_pagination(milestones) + else + milestones + end end private @@ -43,6 +56,7 @@ module Resolvers state: args[:state] || 'all', title: args[:title], search_title: args[:search_title], + sort: args[:sort], containing_date: args[:containing_date] }.merge!(transform_timeframe_parameters(args)).merge!(parent_id_parameters(args)) end @@ -64,5 +78,9 @@ module Resolvers def parse_gids(gids) gids&.map { |gid| GitlabSchema.parse_gid(gid, expected_type: Milestone).model_id } end + + def non_stable_cursor_sort?(sort) + NON_STABLE_CURSOR_SORTS.include?(sort) + end end end diff --git a/app/graphql/resolvers/projects/jira_projects_resolver.rb b/app/graphql/resolvers/projects/jira_projects_resolver.rb index de85e8c42e6..864acb6d759 100644 --- a/app/graphql/resolvers/projects/jira_projects_resolver.rb +++ b/app/graphql/resolvers/projects/jira_projects_resolver.rb @@ -34,16 +34,16 @@ module Resolvers private - alias_method :jira_service, :object + alias_method :jira_integration, :object def project - jira_service&.project + jira_integration&.project end def jira_projects(name:) args = { query: name }.compact - Jira::Requests::Projects::ListService.new(project.jira_service, args).execute + Jira::Requests::Projects::ListService.new(project.jira_integration, args).execute end end end |