Files
RenewCMS/internal/domain/update/updateRestartState.go
T

39 lines
1.1 KiB
Go

package update
import "time"
func (s UpdateStatus) WithRestartRequest(request RestartRequest) UpdateStatus {
return s.settled(StateRestarting, "", request.RequestedAt)
}
func (s UpdateStatus) WithResult(result Result, currentVersion string, now time.Time) UpdateStatus {
if result.IsRunning() && now.Sub(result.StartedAt) < RunningResultMaxAge {
return s.settled(StateRestarting, "", result.StartedAt)
}
if result.IsRunning() || result.Outcome == OutcomeFailed {
return s.settled(StateFailed, ErrorKindInstall, result.StartedAt)
}
if result.Outcome == OutcomeRolledBack {
return s.settled(StateFailed, ErrorKindRolledBack, result.StartedAt)
}
if result.Kind == RestartKindUpdate && result.Tag == currentVersion {
return s.settled(StateSucceeded, "", result.StartedAt)
}
s.State = StateIdle
s.Progress = nil
s.Error = nil
s.StartedAt = nil
return s
}
func (s UpdateStatus) settled(state string, errorKind string, startedAt time.Time) UpdateStatus {
s.State = state
s.Progress = nil
s.Error = nil
if errorKind != "" {
s.Error = &errorKind
}
s.StartedAt = &startedAt
return s
}