package main import ( "errors" "time" "git.cin.su/m/Assistant/contracts/work" workdomain "git.cin.su/m/Assistant/modules/work/domain" ) var errDevelopmentGateCreate = errors.New("development gate must start at evidence collected with revision one") func prepareDevelopmentGate(value work.DevelopmentGate, now time.Time) (work.DevelopmentGate, error) { if value.Stage != work.DevelopmentEvidenceCollected || value.Revision != 1 { return work.DevelopmentGate{}, errDevelopmentGateCreate } value.UpdatedAtUnixMillis = now.UnixMilli() if err := workdomain.ValidateDevelopmentGate(value); err != nil { return work.DevelopmentGate{}, err } return value, nil } func advanceDevelopmentGate(value work.DevelopmentGate, next work.DevelopmentStage, now time.Time) (work.DevelopmentGate, error) { advanced, err := workdomain.AdvanceDevelopmentGate(value, next) if err != nil { return work.DevelopmentGate{}, err } advanced.Revision = value.Revision + 1 advanced.UpdatedAtUnixMillis = now.UnixMilli() return advanced, nil }