package domain import "time" type PluginLifecycleState string const ( PluginLifecycleStatePending PluginLifecycleState = "pending" PluginLifecycleStateInstalled PluginLifecycleState = "installed" PluginLifecycleStateEnabled PluginLifecycleState = "enabled" PluginLifecycleStateDisabled PluginLifecycleState = "disabled" PluginLifecycleStateUpgrading PluginLifecycleState = "upgrading" PluginLifecycleStateRollingBack PluginLifecycleState = "rolling_back" PluginLifecycleStateRetired PluginLifecycleState = "retired" PluginLifecycleStateFailed PluginLifecycleState = "failed" ) type PluginLifecycleOperation string const ( PluginLifecycleOperationInstall PluginLifecycleOperation = "install" PluginLifecycleOperationEnable PluginLifecycleOperation = "enable" PluginLifecycleOperationDisable PluginLifecycleOperation = "disable" PluginLifecycleOperationUpgrade PluginLifecycleOperation = "upgrade" PluginLifecycleOperationRollback PluginLifecycleOperation = "rollback" PluginLifecycleOperationRetire PluginLifecycleOperation = "retire" PluginLifecycleOperationDependencyCheck PluginLifecycleOperation = "dependency-check" ) type PluginLifecycleInstallation struct { ID string PluginID string ServerInstanceID string CurrentVersion string TargetVersion string PreviousVersion string DesiredState PluginLifecycleState CurrentState PluginLifecycleState LastOperation PluginLifecycleOperation Compatibility string DependencyState DependencyState JobID string FailureReason string IdempotencyKey string CreatedAt time.Time UpdatedAt time.Time } type PluginLifecycleFilter struct { PluginID string ServerInstanceID string CurrentState PluginLifecycleState } type PluginLifecycleRequest struct { PluginID string ServerInstanceID string Operation PluginLifecycleOperation TargetVersion string IdempotencyKey string } type PluginLifecycleResult struct { Installation PluginLifecycleInstallation Job Job Status string } func CopyPluginLifecycleInstallation(installation PluginLifecycleInstallation) PluginLifecycleInstallation { return installation } func CopyPluginLifecycleInstallations(installations []PluginLifecycleInstallation) []PluginLifecycleInstallation { if installations == nil { return nil } out := make([]PluginLifecycleInstallation, len(installations)) copy(out, installations) return out } func CopyPluginLifecycleResult(result PluginLifecycleResult) PluginLifecycleResult { result.Installation = CopyPluginLifecycleInstallation(result.Installation) result.Job = CopyJob(result.Job) return result }