diff --git a/pkg/probo/document_service.go b/pkg/probo/document_service.go index ba827970c..801f95405 100644 --- a/pkg/probo/document_service.go +++ b/pkg/probo/document_service.go @@ -75,9 +75,6 @@ type ( ErrDocumentArchived struct { } - ErrCannotPublishMinorWithoutMajor struct { - } - ErrDocumentDraftNotDeletable struct { } @@ -252,10 +249,6 @@ func (e ErrDocumentArchived) Error() string { return "cannot modify an archived document" } -func (e ErrCannotPublishMinorWithoutMajor) Error() string { - return "cannot publish a minor version before a major version exists" -} - func (e ErrDocumentDraftNotDeletable) Error() string { return "latest version is not a deletable draft" } diff --git a/pkg/probo/generated_document_service.go b/pkg/probo/generated_document_service.go index 08feb0fae..6956aa242 100644 --- a/pkg/probo/generated_document_service.go +++ b/pkg/probo/generated_document_service.go @@ -3028,10 +3028,9 @@ func formatRiskTreatment(t coredata.RiskTreatment) string { // version. The version's Major, Minor, Status and PublishedAt fields are // computed here based on the document's current published state, the minor // flag, and whether approvers were provided. When minor is true the version -// is always published at currentMajor.(currentMinor+1) and approvers are -// ignored. When minor is false a non-empty approverIDs triggers an approval -// request at (currentMajor+1).0; otherwise the version is published at -// (currentMajor+1).0. +// is always published as a minor version and approvers are ignored. When +// minor is false a non-empty approverIDs triggers an approval request at +// (currentMajor+1).0; otherwise the version is published at (currentMajor+1).0. func (s *GeneratedDocumentService) publishOrRequestApproval( ctx context.Context, scope coredata.Scoper, tx pg.Tx, @@ -3057,12 +3056,14 @@ func (s *GeneratedDocumentService) publishOrRequestApproval( } if minor { - if document.CurrentPublishedMajor == nil || document.CurrentPublishedMinor == nil { - return &ErrCannotPublishMinorWithoutMajor{} + if document.CurrentPublishedMajor != nil && document.CurrentPublishedMinor != nil { + version.Major = *document.CurrentPublishedMajor + version.Minor = *document.CurrentPublishedMinor + 1 + } else { + version.Major = 0 + version.Minor = 1 } - version.Major = *document.CurrentPublishedMajor - version.Minor = *document.CurrentPublishedMinor + 1 version.Status = coredata.DocumentVersionStatusPublished version.PublishedAt = &now approverIDs = nil diff --git a/pkg/server/api/console/v1/asset_resolvers.go b/pkg/server/api/console/v1/asset_resolvers.go index fc2a09c0d..9fa3cf06e 100644 --- a/pkg/server/api/console/v1/asset_resolvers.go +++ b/pkg/server/api/console/v1/asset_resolvers.go @@ -409,10 +409,6 @@ func (r *mutationResolver) PublishDataList(ctx context.Context, input types.Publ return nil, gqlutils.Conflict(ctx, err) } - if errMinor, ok := errors.AsType[*probo.ErrCannotPublishMinorWithoutMajor](err); ok { - return nil, gqlutils.Invalid(ctx, errMinor) - } - r.logger.ErrorCtx(ctx, "cannot publish data list", log.Error(err)) return nil, gqlutils.Internal(ctx) @@ -437,10 +433,6 @@ func (r *mutationResolver) PublishAssetList(ctx context.Context, input types.Pub return nil, gqlutils.Conflict(ctx, err) } - if errMinor, ok := errors.AsType[*probo.ErrCannotPublishMinorWithoutMajor](err); ok { - return nil, gqlutils.Invalid(ctx, errMinor) - } - r.logger.ErrorCtx(ctx, "cannot publish asset list", log.Error(err)) return nil, gqlutils.Internal(ctx) diff --git a/pkg/server/api/console/v1/audit_resolvers.go b/pkg/server/api/console/v1/audit_resolvers.go index 6c6deb343..a808234bb 100644 --- a/pkg/server/api/console/v1/audit_resolvers.go +++ b/pkg/server/api/console/v1/audit_resolvers.go @@ -693,10 +693,6 @@ func (r *mutationResolver) PublishFindingList(ctx context.Context, input types.P return nil, gqlutils.Conflict(ctx, err) } - if errMinor, ok := errors.AsType[*probo.ErrCannotPublishMinorWithoutMajor](err); ok { - return nil, gqlutils.Invalid(ctx, errMinor) - } - r.logger.ErrorCtx(ctx, "cannot publish finding list", log.Error(err)) return nil, gqlutils.Internal(ctx) diff --git a/pkg/server/api/console/v1/control_resolvers.go b/pkg/server/api/console/v1/control_resolvers.go index e9adb6996..82ef76bfa 100644 --- a/pkg/server/api/console/v1/control_resolvers.go +++ b/pkg/server/api/console/v1/control_resolvers.go @@ -785,10 +785,6 @@ func (r *mutationResolver) PublishStatementOfApplicability(ctx context.Context, return nil, gqlutils.Conflict(ctx, err) } - if errMinor, ok := errors.AsType[*probo.ErrCannotPublishMinorWithoutMajor](err); ok { - return nil, gqlutils.Invalid(ctx, errMinor) - } - r.logger.ErrorCtx(ctx, "cannot publish statement of applicability", log.Error(err)) return nil, gqlutils.Internal(ctx) diff --git a/pkg/server/api/console/v1/data_protection_impact_assessment_resolvers.go b/pkg/server/api/console/v1/data_protection_impact_assessment_resolvers.go index 9ff108f4e..0d34484d1 100644 --- a/pkg/server/api/console/v1/data_protection_impact_assessment_resolvers.go +++ b/pkg/server/api/console/v1/data_protection_impact_assessment_resolvers.go @@ -280,10 +280,6 @@ func (r *mutationResolver) PublishDataProtectionImpactAssessmentList(ctx context return nil, gqlutils.Conflict(ctx, err) } - if errMinor, ok := errors.AsType[*probo.ErrCannotPublishMinorWithoutMajor](err); ok { - return nil, gqlutils.Invalid(ctx, errMinor) - } - r.logger.ErrorCtx(ctx, "cannot publish data protection impact assessment list", log.Error(err)) return nil, gqlutils.Internal(ctx) @@ -308,10 +304,6 @@ func (r *mutationResolver) PublishTransferImpactAssessmentList(ctx context.Conte return nil, gqlutils.Conflict(ctx, err) } - if errMinor, ok := errors.AsType[*probo.ErrCannotPublishMinorWithoutMajor](err); ok { - return nil, gqlutils.Invalid(ctx, errMinor) - } - r.logger.ErrorCtx(ctx, "cannot publish transfer impact assessment list", log.Error(err)) return nil, gqlutils.Internal(ctx) diff --git a/pkg/server/api/console/v1/document_resolvers.go b/pkg/server/api/console/v1/document_resolvers.go index 85fb4484a..a6d9f3906 100644 --- a/pkg/server/api/console/v1/document_resolvers.go +++ b/pkg/server/api/console/v1/document_resolvers.go @@ -1045,10 +1045,6 @@ func (r *mutationResolver) PublishDocument(ctx context.Context, input types.Publ return nil, gqlutils.Conflict(ctx, errPending) } - if errMinor, ok := errors.AsType[*probo.ErrCannotPublishMinorWithoutMajor](err); ok { - return nil, gqlutils.Invalid(ctx, errMinor) - } - if errContractEnded, ok := errors.AsType[*probo.ErrProfileContractEnded](err); ok { return nil, gqlutils.Conflict(ctx, errContractEnded) } diff --git a/pkg/server/api/console/v1/obligation_resolvers.go b/pkg/server/api/console/v1/obligation_resolvers.go index 33de920b0..859538213 100644 --- a/pkg/server/api/console/v1/obligation_resolvers.go +++ b/pkg/server/api/console/v1/obligation_resolvers.go @@ -125,10 +125,6 @@ func (r *mutationResolver) PublishObligationList(ctx context.Context, input type return nil, gqlutils.Conflict(ctx, err) } - if errMinor, ok := errors.AsType[*probo.ErrCannotPublishMinorWithoutMajor](err); ok { - return nil, gqlutils.Invalid(ctx, errMinor) - } - r.logger.ErrorCtx(ctx, "cannot publish obligation list", log.Error(err)) return nil, gqlutils.Internal(ctx) diff --git a/pkg/server/api/console/v1/processing_activity_resolvers.go b/pkg/server/api/console/v1/processing_activity_resolvers.go index 12dc962fa..9840ac0d3 100644 --- a/pkg/server/api/console/v1/processing_activity_resolvers.go +++ b/pkg/server/api/console/v1/processing_activity_resolvers.go @@ -133,10 +133,6 @@ func (r *mutationResolver) PublishProcessingActivityList(ctx context.Context, in return nil, gqlutils.Conflict(ctx, err) } - if errMinor, ok := errors.AsType[*probo.ErrCannotPublishMinorWithoutMajor](err); ok { - return nil, gqlutils.Invalid(ctx, errMinor) - } - r.logger.ErrorCtx(ctx, "cannot publish processing activity list", log.Error(err)) return nil, gqlutils.Internal(ctx) diff --git a/pkg/server/api/console/v1/risk_resolvers.go b/pkg/server/api/console/v1/risk_resolvers.go index c45e6a713..2c2767e9c 100644 --- a/pkg/server/api/console/v1/risk_resolvers.go +++ b/pkg/server/api/console/v1/risk_resolvers.go @@ -246,10 +246,6 @@ func (r *mutationResolver) PublishRiskList(ctx context.Context, input types.Publ return nil, gqlutils.Conflict(ctx, err) } - if errMinor, ok := errors.AsType[*probo.ErrCannotPublishMinorWithoutMajor](err); ok { - return nil, gqlutils.Invalid(ctx, errMinor) - } - r.logger.ErrorCtx(ctx, "cannot publish risk list", log.Error(err)) return nil, gqlutils.Internal(ctx) diff --git a/pkg/server/api/console/v1/third_party_resolvers.go b/pkg/server/api/console/v1/third_party_resolvers.go index f7762a047..b4b879d93 100644 --- a/pkg/server/api/console/v1/third_party_resolvers.go +++ b/pkg/server/api/console/v1/third_party_resolvers.go @@ -581,10 +581,6 @@ func (r *mutationResolver) PublishThirdPartyList(ctx context.Context, input type return nil, gqlutils.Conflict(ctx, err) } - if errMinor, ok := errors.AsType[*probo.ErrCannotPublishMinorWithoutMajor](err); ok { - return nil, gqlutils.Invalid(ctx, errMinor) - } - r.logger.ErrorCtx(ctx, "cannot publish thirdParty list", log.Error(err)) return nil, gqlutils.Internal(ctx)