Commit 1b3870d9 authored by Rémy Coutable's avatar Rémy Coutable

Merge branch 'issue_346033_1/9' into 'master'

Fix GraphQL/OrderedFields offenses

See merge request gitlab-org/gitlab!81478
parents 002a191e def8caf9
...@@ -6,12 +6,12 @@ module Types ...@@ -6,12 +6,12 @@ module Types
class RunnerPlatformType < BaseObject class RunnerPlatformType < BaseObject
graphql_name 'RunnerPlatform' graphql_name 'RunnerPlatform'
field :name, GraphQL::Types::String, null: false,
description: 'Name slug of the runner platform.'
field :human_readable_name, GraphQL::Types::String, null: false,
description: 'Human readable name of the runner platform.'
field :architectures, Types::Ci::RunnerArchitectureType.connection_type, null: true, field :architectures, Types::Ci::RunnerArchitectureType.connection_type, null: true,
description: 'Runner architectures supported for the platform.' description: 'Runner architectures supported for the platform.'
field :human_readable_name, GraphQL::Types::String, null: false,
description: 'Human readable name of the runner platform.'
field :name, GraphQL::Types::String, null: false,
description: 'Name slug of the runner platform.'
end end
end end
end end
...@@ -16,54 +16,20 @@ module Types ...@@ -16,54 +16,20 @@ module Types
alias_method :runner, :object alias_method :runner, :object
field :id, ::Types::GlobalIDType[::Ci::Runner], null: false,
description: 'ID of the runner.'
field :description, GraphQL::Types::String, null: true,
description: 'Description of the runner.'
field :created_at, Types::TimeType, null: true,
description: 'Timestamp of creation of this runner.'
field :contacted_at, Types::TimeType, null: true,
description: 'Timestamp of last contact from this runner.',
method: :contacted_at
field :token_expires_at, Types::TimeType, null: true,
description: 'Runner token expiration time.',
method: :token_expires_at
field :maximum_timeout, GraphQL::Types::Int, null: true,
description: 'Maximum timeout (in seconds) for jobs processed by the runner.'
field :access_level, ::Types::Ci::RunnerAccessLevelEnum, null: false, field :access_level, ::Types::Ci::RunnerAccessLevelEnum, null: false,
description: 'Access level of the runner.' description: 'Access level of the runner.'
field :active, GraphQL::Types::Boolean, null: false, field :active, GraphQL::Types::Boolean, null: false,
description: 'Indicates the runner is allowed to receive jobs.', description: 'Indicates the runner is allowed to receive jobs.',
deprecated: { reason: 'Use paused', milestone: '14.8' } deprecated: { reason: 'Use paused', milestone: '14.8' }
field :paused, GraphQL::Types::Boolean, null: false,
description: 'Indicates the runner is paused and not available to run jobs.'
field :status,
Types::Ci::RunnerStatusEnum,
null: false,
description: 'Status of the runner.',
resolver: ::Resolvers::Ci::RunnerStatusResolver
field :version, GraphQL::Types::String, null: true,
description: 'Version of the runner.'
field :short_sha, GraphQL::Types::String, null: true,
description: %q(First eight characters of the runner's token used to authenticate new job requests. Used as the runner's unique ID.)
field :revision, GraphQL::Types::String, null: true,
description: 'Revision of the runner.'
field :locked, GraphQL::Types::Boolean, null: true,
description: 'Indicates the runner is locked.'
field :run_untagged, GraphQL::Types::Boolean, null: false,
description: 'Indicates the runner is able to run untagged jobs.'
field :ip_address, GraphQL::Types::String, null: true,
description: 'IP address of the runner.'
field :runner_type, ::Types::Ci::RunnerTypeEnum, null: false,
description: 'Type of the runner.'
field :tag_list, [GraphQL::Types::String], null: true,
description: 'Tags associated with the runner.'
field :project_count, GraphQL::Types::Int, null: true,
description: 'Number of projects that the runner is associated with.'
field :job_count, GraphQL::Types::Int, null: true,
description: "Number of jobs processed by the runner (limited to #{JOB_COUNT_LIMIT}, plus one to indicate that more items exist)."
field :admin_url, GraphQL::Types::String, null: true, field :admin_url, GraphQL::Types::String, null: true,
description: 'Admin URL of the runner. Only available for administrators.' description: 'Admin URL of the runner. Only available for administrators.'
field :contacted_at, Types::TimeType, null: true,
description: 'Timestamp of last contact from this runner.',
method: :contacted_at
field :created_at, Types::TimeType, null: true,
description: 'Timestamp of creation of this runner.'
field :description, GraphQL::Types::String, null: true,
description: 'Description of the runner.'
field :edit_admin_url, GraphQL::Types::String, null: true, field :edit_admin_url, GraphQL::Types::String, null: true,
description: 'Admin form URL of the runner. Only available for administrators.' description: 'Admin form URL of the runner. Only available for administrators.'
field :executor_name, GraphQL::Types::String, null: true, field :executor_name, GraphQL::Types::String, null: true,
...@@ -72,12 +38,46 @@ module Types ...@@ -72,12 +38,46 @@ module Types
feature_flag: :graphql_ci_runner_executor feature_flag: :graphql_ci_runner_executor
field :groups, ::Types::GroupType.connection_type, null: true, field :groups, ::Types::GroupType.connection_type, null: true,
description: 'Groups the runner is associated with. For group runners only.' description: 'Groups the runner is associated with. For group runners only.'
field :projects, ::Types::ProjectType.connection_type, null: true, field :id, ::Types::GlobalIDType[::Ci::Runner], null: false,
description: 'Projects the runner is associated with. For project runners only.' description: 'ID of the runner.'
field :ip_address, GraphQL::Types::String, null: true,
description: 'IP address of the runner.'
field :job_count, GraphQL::Types::Int, null: true,
description: "Number of jobs processed by the runner (limited to #{JOB_COUNT_LIMIT}, plus one to indicate that more items exist)."
field :jobs, ::Types::Ci::JobType.connection_type, null: true, field :jobs, ::Types::Ci::JobType.connection_type, null: true,
description: 'Jobs assigned to the runner.', description: 'Jobs assigned to the runner.',
authorize: :read_builds, authorize: :read_builds,
resolver: ::Resolvers::Ci::RunnerJobsResolver resolver: ::Resolvers::Ci::RunnerJobsResolver
field :locked, GraphQL::Types::Boolean, null: true,
description: 'Indicates the runner is locked.'
field :maximum_timeout, GraphQL::Types::Int, null: true,
description: 'Maximum timeout (in seconds) for jobs processed by the runner.'
field :paused, GraphQL::Types::Boolean, null: false,
description: 'Indicates the runner is paused and not available to run jobs.'
field :project_count, GraphQL::Types::Int, null: true,
description: 'Number of projects that the runner is associated with.'
field :projects, ::Types::ProjectType.connection_type, null: true,
description: 'Projects the runner is associated with. For project runners only.'
field :revision, GraphQL::Types::String, null: true,
description: 'Revision of the runner.'
field :run_untagged, GraphQL::Types::Boolean, null: false,
description: 'Indicates the runner is able to run untagged jobs.'
field :runner_type, ::Types::Ci::RunnerTypeEnum, null: false,
description: 'Type of the runner.'
field :short_sha, GraphQL::Types::String, null: true,
description: %q(First eight characters of the runner's token used to authenticate new job requests. Used as the runner's unique ID.)
field :status,
Types::Ci::RunnerStatusEnum,
null: false,
description: 'Status of the runner.',
resolver: ::Resolvers::Ci::RunnerStatusResolver
field :tag_list, [GraphQL::Types::String], null: true,
description: 'Tags associated with the runner.'
field :token_expires_at, Types::TimeType, null: true,
description: 'Runner token expiration time.',
method: :token_expires_at
field :version, GraphQL::Types::String, null: true,
description: 'Version of the runner.'
def job_count def job_count
# We limit to 1 above the JOB_COUNT_LIMIT to indicate that more items exist after JOB_COUNT_LIMIT # We limit to 1 above the JOB_COUNT_LIMIT to indicate that more items exist after JOB_COUNT_LIMIT
......
...@@ -6,17 +6,17 @@ module Types ...@@ -6,17 +6,17 @@ module Types
graphql_name 'CiStage' graphql_name 'CiStage'
authorize :read_build authorize :read_build
field :id, GraphQL::Types::ID, null: false, field :detailed_status, Types::Ci::DetailedStatusType, null: true,
description: 'ID of the stage.' description: 'Detailed status of the stage.'
field :name, type: GraphQL::Types::String, null: true,
description: 'Name of the stage.'
field :groups, type: Ci::GroupType.connection_type, null: true, field :groups, type: Ci::GroupType.connection_type, null: true,
extras: [:lookahead], extras: [:lookahead],
description: 'Group of jobs for the stage.' description: 'Group of jobs for the stage.'
field :detailed_status, Types::Ci::DetailedStatusType, null: true, field :id, GraphQL::Types::ID, null: false,
description: 'Detailed status of the stage.' description: 'ID of the stage.'
field :jobs, Types::Ci::JobType.connection_type, null: true, field :jobs, Types::Ci::JobType.connection_type, null: true,
description: 'Jobs for the stage.' description: 'Jobs for the stage.'
field :name, type: GraphQL::Types::String, null: true,
description: 'Name of the stage.'
field :status, GraphQL::Types::String, field :status, GraphQL::Types::String,
null: true, null: true,
description: 'Status of the pipeline stage.' description: 'Status of the pipeline stage.'
......
...@@ -5,13 +5,13 @@ module Types ...@@ -5,13 +5,13 @@ module Types
class StatusActionType < BaseObject class StatusActionType < BaseObject
graphql_name 'StatusAction' graphql_name 'StatusAction'
field :id, GraphQL::Types::String, null: false,
description: 'ID for a status action.',
extras: [:parent]
field :button_title, GraphQL::Types::String, null: true, field :button_title, GraphQL::Types::String, null: true,
description: 'Title for the button, for example: Retry this job.' description: 'Title for the button, for example: Retry this job.'
field :icon, GraphQL::Types::String, null: true, field :icon, GraphQL::Types::String, null: true,
description: 'Icon used in the action button.' description: 'Icon used in the action button.'
field :id, GraphQL::Types::String, null: false,
description: 'ID for a status action.',
extras: [:parent]
field :method, GraphQL::Types::String, null: true, field :method, GraphQL::Types::String, null: true,
description: 'Method for the action, for example: :post.', description: 'Method for the action, for example: :post.',
resolver_method: :action_method resolver_method: :action_method
......
...@@ -7,10 +7,10 @@ module Types ...@@ -7,10 +7,10 @@ module Types
graphql_name 'CiTemplate' graphql_name 'CiTemplate'
description 'GitLab CI/CD configuration template.' description 'GitLab CI/CD configuration template.'
field :name, GraphQL::Types::String, null: false,
description: 'Name of the CI template.'
field :content, GraphQL::Types::String, null: false, field :content, GraphQL::Types::String, null: false,
description: 'Contents of the CI template.' description: 'Contents of the CI template.'
field :name, GraphQL::Types::String, null: false,
description: 'Name of the CI template.'
end end
end end
end end
...@@ -41,12 +41,12 @@ module Types ...@@ -41,12 +41,12 @@ module Types
field :signature_html, type: GraphQL::Types::String, null: true, calls_gitaly: true, field :signature_html, type: GraphQL::Types::String, null: true, calls_gitaly: true,
description: 'Rendered HTML of the commit signature.' description: 'Rendered HTML of the commit signature.'
field :author_name, type: GraphQL::Types::String, null: true,
description: 'Commit authors name.'
field :author_email, type: GraphQL::Types::String, null: true, field :author_email, type: GraphQL::Types::String, null: true,
description: "Commit author's email." description: "Commit author's email."
field :author_gravatar, type: GraphQL::Types::String, null: true, field :author_gravatar, type: GraphQL::Types::String, null: true,
description: 'Commit authors gravatar.' description: 'Commit authors gravatar.'
field :author_name, type: GraphQL::Types::String, null: true,
description: 'Commit authors name.'
# models/commit lazy loads the author by email # models/commit lazy loads the author by email
field :author, type: Types::UserType, null: true, field :author, type: Types::UserType, null: true,
......
...@@ -8,14 +8,14 @@ module Types ...@@ -8,14 +8,14 @@ module Types
authorize :destroy_container_image authorize :destroy_container_image
field :cadence, Types::ContainerExpirationPolicyCadenceEnum, null: false, description: 'This container expiration policy schedule.'
field :created_at, Types::TimeType, null: false, description: 'Timestamp of when the container expiration policy was created.' field :created_at, Types::TimeType, null: false, description: 'Timestamp of when the container expiration policy was created.'
field :updated_at, Types::TimeType, null: false, description: 'Timestamp of when the container expiration policy was updated.'
field :enabled, GraphQL::Types::Boolean, null: false, description: 'Indicates whether this container expiration policy is enabled.' field :enabled, GraphQL::Types::Boolean, null: false, description: 'Indicates whether this container expiration policy is enabled.'
field :older_than, Types::ContainerExpirationPolicyOlderThanEnum, null: true, description: 'Tags older that this will expire.'
field :cadence, Types::ContainerExpirationPolicyCadenceEnum, null: false, description: 'This container expiration policy schedule.'
field :keep_n, Types::ContainerExpirationPolicyKeepEnum, null: true, description: 'Number of tags to retain.' field :keep_n, Types::ContainerExpirationPolicyKeepEnum, null: true, description: 'Number of tags to retain.'
field :name_regex, Types::UntrustedRegexp, null: true, description: 'Tags with names matching this regex pattern will expire.' field :name_regex, Types::UntrustedRegexp, null: true, description: 'Tags with names matching this regex pattern will expire.'
field :name_regex_keep, Types::UntrustedRegexp, null: true, description: 'Tags with names matching this regex pattern will be preserved.' field :name_regex_keep, Types::UntrustedRegexp, null: true, description: 'Tags with names matching this regex pattern will be preserved.'
field :next_run_at, Types::TimeType, null: true, description: 'Next time that this container expiration policy will get executed.' field :next_run_at, Types::TimeType, null: true, description: 'Next time that this container expiration policy will get executed.'
field :older_than, Types::ContainerExpirationPolicyOlderThanEnum, null: true, description: 'Tags older that this will expire.'
field :updated_at, Types::TimeType, null: false, description: 'Timestamp of when the container expiration policy was updated.'
end end
end end
...@@ -8,15 +8,15 @@ module Types ...@@ -8,15 +8,15 @@ module Types
authorize :read_container_image authorize :read_container_image
field :can_delete, GraphQL::Types::Boolean, null: false, description: 'Can the current user delete this tag.'
field :created_at, Types::TimeType, null: true, description: 'Timestamp when the tag was created.'
field :digest, GraphQL::Types::String, null: true, description: 'Digest of the tag.'
field :location, GraphQL::Types::String, null: false, description: 'URL of the tag.'
field :name, GraphQL::Types::String, null: false, description: 'Name of the tag.' field :name, GraphQL::Types::String, null: false, description: 'Name of the tag.'
field :path, GraphQL::Types::String, null: false, description: 'Path of the tag.' field :path, GraphQL::Types::String, null: false, description: 'Path of the tag.'
field :location, GraphQL::Types::String, null: false, description: 'URL of the tag.'
field :digest, GraphQL::Types::String, null: true, description: 'Digest of the tag.'
field :revision, GraphQL::Types::String, null: true, description: 'Revision of the tag.' field :revision, GraphQL::Types::String, null: true, description: 'Revision of the tag.'
field :short_revision, GraphQL::Types::String, null: true, description: 'Short revision of the tag.' field :short_revision, GraphQL::Types::String, null: true, description: 'Short revision of the tag.'
field :total_size, GraphQL::Types::BigInt, null: true, description: 'Size of the tag.' field :total_size, GraphQL::Types::BigInt, null: true, description: 'Size of the tag.'
field :created_at, Types::TimeType, null: true, description: 'Timestamp when the tag was created.'
field :can_delete, GraphQL::Types::Boolean, null: false, description: 'Can the current user delete this tag.'
def can_delete def can_delete
Ability.allowed?(current_user, :destroy_container_image, object) Ability.allowed?(current_user, :destroy_container_image, object)
......
...@@ -8,18 +8,18 @@ module Types ...@@ -8,18 +8,18 @@ module Types
authorize :read_container_image authorize :read_container_image
field :can_delete, GraphQL::Types::Boolean, null: false, description: 'Can the current user delete the container repository.'
field :created_at, Types::TimeType, null: false, description: 'Timestamp when the container repository was created.'
field :expiration_policy_cleanup_status, Types::ContainerRepositoryCleanupStatusEnum, null: true, description: 'Tags cleanup status for the container repository.'
field :expiration_policy_started_at, Types::TimeType, null: true, description: 'Timestamp when the cleanup done by the expiration policy was started on the container repository.'
field :id, GraphQL::Types::ID, null: false, description: 'ID of the container repository.' field :id, GraphQL::Types::ID, null: false, description: 'ID of the container repository.'
field :location, GraphQL::Types::String, null: false, description: 'URL of the container repository.'
field :name, GraphQL::Types::String, null: false, description: 'Name of the container repository.' field :name, GraphQL::Types::String, null: false, description: 'Name of the container repository.'
field :path, GraphQL::Types::String, null: false, description: 'Path of the container repository.' field :path, GraphQL::Types::String, null: false, description: 'Path of the container repository.'
field :location, GraphQL::Types::String, null: false, description: 'URL of the container repository.' field :project, Types::ProjectType, null: false, description: 'Project of the container registry.'
field :created_at, Types::TimeType, null: false, description: 'Timestamp when the container repository was created.'
field :updated_at, Types::TimeType, null: false, description: 'Timestamp when the container repository was updated.'
field :expiration_policy_started_at, Types::TimeType, null: true, description: 'Timestamp when the cleanup done by the expiration policy was started on the container repository.'
field :expiration_policy_cleanup_status, Types::ContainerRepositoryCleanupStatusEnum, null: true, description: 'Tags cleanup status for the container repository.'
field :status, Types::ContainerRepositoryStatusEnum, null: true, description: 'Status of the container repository.' field :status, Types::ContainerRepositoryStatusEnum, null: true, description: 'Status of the container repository.'
field :tags_count, GraphQL::Types::Int, null: false, description: 'Number of tags associated with this image.' field :tags_count, GraphQL::Types::Int, null: false, description: 'Number of tags associated with this image.'
field :can_delete, GraphQL::Types::Boolean, null: false, description: 'Can the current user delete the container repository.' field :updated_at, Types::TimeType, null: false, description: 'Timestamp when the container repository was updated.'
field :project, Types::ProjectType, null: false, description: 'Project of the container registry.'
def can_delete def can_delete
Ability.allowed?(current_user, :update_container_image, object) Ability.allowed?(current_user, :update_container_image, object)
......
...@@ -9,8 +9,8 @@ module Types ...@@ -9,8 +9,8 @@ module Types
authorize :read_dependency_proxy authorize :read_dependency_proxy
field :created_at, Types::TimeType, null: false, description: 'Date of creation.' field :created_at, Types::TimeType, null: false, description: 'Date of creation.'
field :updated_at, Types::TimeType, null: false, description: 'Date of most recent update.'
field :file_name, GraphQL::Types::String, null: false, description: 'Name of the blob.' field :file_name, GraphQL::Types::String, null: false, description: 'Name of the blob.'
field :size, GraphQL::Types::String, null: false, description: 'Size of the blob file.' field :size, GraphQL::Types::String, null: false, description: 'Size of the blob file.'
field :updated_at, Types::TimeType, null: false, description: 'Date of most recent update.'
end end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment