diff --git a/app/graphql/types/packages/package_status_enum.rb b/app/graphql/types/packages/package_status_enum.rb new file mode 100644 index 0000000000000000000000000000000000000000..2e6ea5d0a5040660a6807de422c4271adefc4f97 --- /dev/null +++ b/app/graphql/types/packages/package_status_enum.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +module Types + module Packages + class PackageStatusEnum < BaseEnum + graphql_name 'PackageStatus' + + ::Packages::Package.statuses.keys.each do |status| + value status.to_s.upcase, description: "Packages with a #{status} status", value: status.to_s + end + end + end +end diff --git a/app/graphql/types/packages/package_type.rb b/app/graphql/types/packages/package_type.rb index 9ea4c4b74ea69576a4e22b90fe6635612d10e2a4..659af4a7057ac802ee7898ced7ff2be64f87b690 100644 --- a/app/graphql/types/packages/package_type.rb +++ b/app/graphql/types/packages/package_type.rb @@ -25,6 +25,7 @@ class PackageType < ::Types::BaseObject field :versions, ::Types::Packages::PackageType.connection_type, null: true, description: 'The other versions of the package.', deprecated: { reason: 'This field is now only returned in the PackageDetailsType', milestone: '13.11' } + field :status, Types::Packages::PackageStatusEnum, null: false, description: 'Package status.' def project Gitlab::Graphql::Loaders::BatchModelLoader.new(Project, object.project_id).find diff --git a/changelogs/unreleased/285467-package-registry-graphql-api-4.yml b/changelogs/unreleased/285467-package-registry-graphql-api-4.yml new file mode 100644 index 0000000000000000000000000000000000000000..6b239152b10dfabbabcbaba68b5054e9b1319e14 --- /dev/null +++ b/changelogs/unreleased/285467-package-registry-graphql-api-4.yml @@ -0,0 +1,5 @@ +--- +title: Add missing status type and enum to package graphql type +merge_request: 61002 +author: +type: added diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md index f88ed6dfcd60a94e94bb574bce0ca80f3a0e9262..cf35326480df7d4a51c0c294ecfd1b40fa14f075 100644 --- a/doc/api/graphql/reference/index.md +++ b/doc/api/graphql/reference/index.md @@ -10365,6 +10365,7 @@ Represents a package in the Package Registry. Note that this type is in beta and | <a id="packagepackagetype"></a>`packageType` | [`PackageTypeEnum!`](#packagetypeenum) | Package type. | | <a id="packagepipelines"></a>`pipelines` | [`PipelineConnection`](#pipelineconnection) | Pipelines that built the package. (see [Connections](#connections)) | | <a id="packageproject"></a>`project` | [`Project!`](#project) | Project where the package is stored. | +| <a id="packagestatus"></a>`status` | [`PackageStatus!`](#packagestatus) | Package status. | | <a id="packagetags"></a>`tags` | [`PackageTagConnection`](#packagetagconnection) | Package tags. (see [Connections](#connections)) | | <a id="packageupdatedat"></a>`updatedAt` | [`Time!`](#time) | Date of most recent update. | | <a id="packageversion"></a>`version` | [`String`](#string) | Version string. | @@ -10399,6 +10400,7 @@ Represents a package details in the Package Registry. Note that this type is in | <a id="packagedetailstypepackagetype"></a>`packageType` | [`PackageTypeEnum!`](#packagetypeenum) | Package type. | | <a id="packagedetailstypepipelines"></a>`pipelines` | [`PipelineConnection`](#pipelineconnection) | Pipelines that built the package. (see [Connections](#connections)) | | <a id="packagedetailstypeproject"></a>`project` | [`Project!`](#project) | Project where the package is stored. | +| <a id="packagedetailstypestatus"></a>`status` | [`PackageStatus!`](#packagestatus) | Package status. | | <a id="packagedetailstypetags"></a>`tags` | [`PackageTagConnection`](#packagetagconnection) | Package tags. (see [Connections](#connections)) | | <a id="packagedetailstypeupdatedat"></a>`updatedAt` | [`Time!`](#time) | Date of most recent update. | | <a id="packagedetailstypeversion"></a>`version` | [`String`](#string) | Version string. | @@ -14049,6 +14051,15 @@ Values for sorting package. | <a id="packagesortversion_asc"></a>`VERSION_ASC` | Ordered by version in ascending order. | | <a id="packagesortversion_desc"></a>`VERSION_DESC` | Ordered by version in descending order. | +### `PackageStatus` + +| Value | Description | +| ----- | ----------- | +| <a id="packagestatusdefault"></a>`DEFAULT` | Packages with a default status. | +| <a id="packagestatuserror"></a>`ERROR` | Packages with a error status. | +| <a id="packagestatushidden"></a>`HIDDEN` | Packages with a hidden status. | +| <a id="packagestatusprocessing"></a>`PROCESSING` | Packages with a processing status. | + ### `PackageTypeEnum` | Value | Description | diff --git a/spec/fixtures/api/schemas/graphql/packages/package_details.json b/spec/fixtures/api/schemas/graphql/packages/package_details.json index f59b67ba64a6cf5cdea3ca17cf48086bfb3acda3..89e73d48c6093a024e32132f70c8a9d3207e0157 100644 --- a/spec/fixtures/api/schemas/graphql/packages/package_details.json +++ b/spec/fixtures/api/schemas/graphql/packages/package_details.json @@ -12,7 +12,8 @@ "tags", "pipelines", "versions", - "metadata" + "metadata", + "status" ], "properties": { "id": { @@ -92,6 +93,10 @@ "edges": { "type": "array" }, "nodes": { "type": "array" } } + }, + "status": { + "type": ["string"], + "enum": ["DEFAULT", "HIDDEN", "PROCESSING", "ERROR"] } } } diff --git a/spec/graphql/types/packages/package_status_enum_spec.rb b/spec/graphql/types/packages/package_status_enum_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..71d05da35ea5d43b5d458152db62766bd3408b79 --- /dev/null +++ b/spec/graphql/types/packages/package_status_enum_spec.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe GitlabSchema.types['PackageStatus'] do + it 'exposes all package statuses' do + expect(described_class.values.keys).to contain_exactly(*%w[DEFAULT HIDDEN PROCESSING ERROR]) + end +end diff --git a/spec/graphql/types/packages/package_type_spec.rb b/spec/graphql/types/packages/package_type_spec.rb index 544d6ddc3af7d61a8da09e51257ce64350baaa0f..07573044abb12fea30bd1ee2e2d7f5cd243f0866 100644 --- a/spec/graphql/types/packages/package_type_spec.rb +++ b/spec/graphql/types/packages/package_type_spec.rb @@ -9,6 +9,7 @@ created_at updated_at project tags pipelines metadata versions + status ] expect(described_class).to include_graphql_fields(*expected_fields)