33 lines
1.0 KiB
Go
33 lines
1.0 KiB
Go
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
|
|
}
|