Use status-specific errors for non-draft campaigns

Replace ErrCampaignCannotStart and ErrCampaignCannotUpdate with
sentinels per campaign status, mapped through CampaignStatusError
and wrapped with operation-specific fmt.Errorf prefixes.

Signed-off-by: Cursor Agent <cursoragent@cursor.com>

Co-authored-by: Bryan FRIMIN <bryan@frimin.fr>
This commit is contained in:
Cursor Agent
2026-07-20 16:05:22 +00:00
parent 3d606dd0e8
commit b3e60da4d5
4 changed files with 96 additions and 13 deletions

View File

@@ -760,7 +760,10 @@ func (r *mutationResolver) UpdateAccessReviewCampaign(ctx context.Context, input
return nil, gqlutils.NotFound(ctx, err)
}
if errors.Is(err, accessreview.ErrCampaignCannotUpdate) {
if errors.Is(err, accessreview.ErrCampaignInProgress) ||
errors.Is(err, accessreview.ErrCampaignPendingActions) ||
errors.Is(err, accessreview.ErrCampaignCompleted) ||
errors.Is(err, accessreview.ErrCampaignCancelled) {
return nil, gqlutils.Invalid(ctx, err)
}
@@ -806,7 +809,10 @@ func (r *mutationResolver) StartAccessReviewCampaign(ctx context.Context, input
campaign, err := r.accessReview.StartCampaign(ctx, scope, input.AccessReviewCampaignID)
if err != nil {
if errors.Is(err, accessreview.ErrCampaignMissingSources) ||
errors.Is(err, accessreview.ErrCampaignCannotStart) {
errors.Is(err, accessreview.ErrCampaignInProgress) ||
errors.Is(err, accessreview.ErrCampaignPendingActions) ||
errors.Is(err, accessreview.ErrCampaignCompleted) ||
errors.Is(err, accessreview.ErrCampaignCancelled) {
return nil, gqlutils.Invalid(ctx, err)
}
@@ -878,6 +884,13 @@ func (r *mutationResolver) AddAccessReviewCampaignSource(ctx context.Context, in
return nil, gqlutils.NotFound(ctx, err)
}
if errors.Is(err, accessreview.ErrCampaignInProgress) ||
errors.Is(err, accessreview.ErrCampaignPendingActions) ||
errors.Is(err, accessreview.ErrCampaignCompleted) ||
errors.Is(err, accessreview.ErrCampaignCancelled) {
return nil, gqlutils.Invalid(ctx, err)
}
r.logger.ErrorCtx(ctx, "cannot add scope source to access review campaign", log.Error(err))
return nil, gqlutils.Internal(ctx)