Files
browser/platform/domain/server_lifecycle.go
T
2026-07-11 14:56:10 +08:00

65 lines
1.5 KiB
Go

package domain
type ServerLifecycleAction string
const (
ServerLifecycleActionCreate ServerLifecycleAction = "create"
ServerLifecycleActionStart ServerLifecycleAction = "start"
ServerLifecycleActionStop ServerLifecycleAction = "stop"
)
const (
LifecycleCapabilityInstall = "process.install"
LifecycleCapabilityStart = "process.start"
LifecycleCapabilityStop = "process.stop"
)
type ServerLifecycleCreate struct {
ID string
PluginID string
RunEndpointID string
Name string
OwnerUserID string
IdempotencyKey string
}
type ServerLifecycleCommand struct {
ServerInstanceID string
ExpectedConfigVersion int
IdempotencyKey string
}
type ServerLifecycleResult struct {
Accepted bool
Action ServerLifecycleAction
Instance ServerInstance
Job Job
}
func LifecycleCapabilityForAction(action ServerLifecycleAction) string {
switch action {
case ServerLifecycleActionCreate:
return LifecycleCapabilityInstall
case ServerLifecycleActionStart:
return LifecycleCapabilityStart
case ServerLifecycleActionStop:
return LifecycleCapabilityStop
default:
return ""
}
}
func CopyServerLifecycleCreate(create ServerLifecycleCreate) ServerLifecycleCreate {
return create
}
func CopyServerLifecycleCommand(command ServerLifecycleCommand) ServerLifecycleCommand {
return command
}
func CopyServerLifecycleResult(result ServerLifecycleResult) ServerLifecycleResult {
result.Instance = CopyServerInstance(result.Instance)
result.Job = CopyJob(result.Job)
return result
}