From f2d8c49647b3e36dfe1e44072c7a18d9b2b0eabb Mon Sep 17 00:00:00 2001 From: Quaternions <krakow20@gmail.com> Date: Fri, 28 Mar 2025 19:10:29 -0700 Subject: [PATCH] submissions: move pipeline restriction to accept rather than create --- pkg/service/submissions.go | 42 +++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/pkg/service/submissions.go b/pkg/service/submissions.go index e52337e..1ecbc93 100644 --- a/pkg/service/submissions.go +++ b/pkg/service/submissions.go @@ -20,6 +20,7 @@ var( model.StatusSubmitted, model.StatusUnderConstruction, } + // prevent two mapfixes with same asset id ActiveSubmissionStatuses = []model.Status{ model.StatusUploading, model.StatusValidated, @@ -29,6 +30,13 @@ var( model.StatusSubmitted, model.StatusUnderConstruction, } + // limit mapfixes in the pipeline to one per target map + ActiveAcceptedSubmissionStatuses = []model.Status{ + model.StatusUploading, + model.StatusValidated, + model.StatusValidating, + model.StatusAccepted, + } ) var ( @@ -96,23 +104,6 @@ func (svc *Service) CreateSubmission(ctx context.Context, request *api.Submissio } } - // Check if an active submission with the same target asset id exists - if request.TargetAssetID.IsSet() && request.TargetAssetID.Value != 0{ - filter := datastore.Optional() - filter.Add("target_asset_id", request.TargetAssetID.Value) - filter.Add("status_id", ActiveSubmissionStatuses) - active_submissions, err := svc.DB.Submissions().List(ctx, filter, model.Page{ - Number: 1, - Size: 1, - },model.SubmissionListSortDisabled) - if err != nil { - return nil, err - } - if len(active_submissions) != 0{ - return nil, ErrActiveSubmissionSameTargetAssetID - } - } - submission, err := svc.DB.Submissions().Create(ctx, model.Submission{ ID: 0, DisplayName: request.DisplayName, @@ -529,6 +520,23 @@ func (svc *Service) ActionSubmissionTriggerValidate(ctx context.Context, params return ErrAcceptOwnSubmission } + // Check if an active submission with the same target asset id exists + if submission.TargetAssetID != 0 { + filter := datastore.Optional() + filter.Add("target_asset_id", submission.TargetAssetID) + filter.Add("status_id", ActiveAcceptedSubmissionStatuses) + active_submissions, err := svc.DB.Submissions().List(ctx, filter, model.Page{ + Number: 1, + Size: 1, + },model.SubmissionListSortDisabled) + if err != nil { + return err + } + if len(active_submissions) != 0{ + return ErrActiveSubmissionSameTargetAssetID + } + } + // transaction smap := datastore.Optional() smap.Add("status_id", model.StatusValidating)