package service_internal import ( "context" internal "git.itzana.me/strafesnet/maps-service/pkg/internal" "git.itzana.me/strafesnet/maps-service/pkg/datastore" "git.itzana.me/strafesnet/maps-service/pkg/model" ) // UpdateMapfixValidatedModel implements patchMapfixModel operation. // // Update model following role restrictions. // // POST /mapfixes/{MapfixID}/validated-model func (svc *Service) UpdateMapfixValidatedModel(ctx context.Context, params internal.UpdateMapfixValidatedModelParams) error { // check if Status is ChangesRequested|Submitted|UnderConstruction pmap := datastore.Optional() pmap.AddNotNil("validated_asset_id", params.ValidatedModelID) pmap.AddNotNil("validated_asset_version", params.ValidatedModelVersion) // DO NOT reset completed when validated model is updated // pmap.Add("completed", false) return svc.DB.Mapfixes().IfStatusThenUpdate(ctx, params.MapfixID, []model.MapfixStatus{model.MapfixStatusValidating}, pmap) } // ActionMapfixValidate invokes actionMapfixValidate operation. // // Role Validator changes status from Validating -> Validated. // // POST /mapfixes/{MapfixID}/status/validator-validated func (svc *Service) ActionMapfixValidated(ctx context.Context, params internal.ActionMapfixValidatedParams) error { // transaction smap := datastore.Optional() smap.Add("status_id", model.MapfixStatusValidated) return svc.DB.Mapfixes().IfStatusThenUpdate(ctx, params.MapfixID, []model.MapfixStatus{model.MapfixStatusValidating}, smap) } // ActionMapfixAccepted implements actionMapfixAccepted operation. // // (Internal endpoint) Role Validator changes status from Validating -> Accepted. // // POST /mapfixes/{MapfixID}/status/validator-failed func (svc *Service) ActionMapfixAccepted(ctx context.Context, params internal.ActionMapfixAcceptedParams) error { // transaction smap := datastore.Optional() smap.Add("status_id", model.MapfixStatusAccepted) smap.Add("status_message", params.StatusMessage) return svc.DB.Mapfixes().IfStatusThenUpdate(ctx, params.MapfixID, []model.MapfixStatus{model.MapfixStatusValidating}, smap) } // ActionMapfixUploaded implements actionMapfixUploaded operation. // // (Internal endpoint) Role Validator changes status from Uploading -> Uploaded. // // POST /mapfixes/{MapfixID}/status/validator-uploaded func (svc *Service) ActionMapfixUploaded(ctx context.Context, params internal.ActionMapfixUploadedParams) error { // transaction smap := datastore.Optional() smap.Add("status_id", model.MapfixStatusUploaded) return svc.DB.Mapfixes().IfStatusThenUpdate(ctx, params.MapfixID, []model.MapfixStatus{model.MapfixStatusUploading}, smap) }