Finite-state machine in go
go get -u trellis.tech/trellis/common.v3/state-machine/fsm
// Repo is the interface for managing namespace's transitions in cache
type Repo interface {
// AddTransition add a transition into cache
AddTransition(*Transition) error
// RemoveTransition remove a transaction by information
RemoveTransition(*Transition) error
// ChangeCurrentStatus change namespace's current status by namespace and event
ChangeCurrentStatus(namespace string, event string) (string, error)
// GetTargetTransition get target transition by current information
GetTargetTransition(namespace, curStatus, event string) (*Transition, error)
// Remove remove all namespaces from cache
Remove()
// AddNamespace add a namespace into cache
AddNamespace(namespace string) error
// RemoveNamespace remove namespace's Transitions
RemoveNamespace(namespace string)
}
// TransitionRepo is the interface for managing transitions in cache
type TransitionRepo interface {
// Add a transaction into cache
AddTransaction(trans *Transition) error
// RemoveNamespace remove namespace's Transitions
RemoveTransition(status, event string) error
// RemoveByTransaction remove a transaction by information
ChangeStatus(event string) (string, error)
// GetTargetTransition get target transition by current information
GetTargetTransition(status, event string) (*Transition, error)
// SetCurrentStatus set current status
SetCurrentStatus(status string) error
// GetCurrentStatus get current status
GetCurrentStatus() string
}