Files
browser/platform/domain/plugin_operations.go
T

156 lines
4.5 KiB
Go

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
}
type AIConfigDiffState string
const (
AIConfigDiffStatePending AIConfigDiffState = "pending"
AIConfigDiffStateApproved AIConfigDiffState = "approved"
AIConfigDiffStateCancelled AIConfigDiffState = "cancelled"
AIConfigDiffStateExpired AIConfigDiffState = "expired"
)
type AIConfigDiffPreview struct {
ID string
RequestID string
CreatedBy string
ServerInstanceID string
PluginID string
ProviderID string
Model string
Key string
ConfigVersion int
CurrentConfigChecksum string
ProposedConfig string
DiffSummary string
State AIConfigDiffState
ExpiresAt time.Time
ApprovedBy string
ApprovedAt time.Time
ApprovalIdempotencyKey string
CancelledBy string
CancelledAt time.Time
JobID string
CreatedAt time.Time
UpdatedAt time.Time
}
type AIConfigDiffFilter struct {
ServerInstanceID string
PluginID string
State AIConfigDiffState
}
type AIConfigDiffApprovalRequest struct {
DiffID string
IdempotencyKey string
}
type AIConfigDiffApprovalResult struct {
Preview AIConfigDiffPreview
Dispatch ServerConfigWriteDispatch
}
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
}
func CopyAIConfigDiffPreview(preview AIConfigDiffPreview) AIConfigDiffPreview {
return preview
}
func CopyAIConfigDiffPreviews(previews []AIConfigDiffPreview) []AIConfigDiffPreview {
if previews == nil {
return nil
}
out := make([]AIConfigDiffPreview, len(previews))
copy(out, previews)
return out
}
func CopyAIConfigDiffApprovalResult(result AIConfigDiffApprovalResult) AIConfigDiffApprovalResult {
result.Preview = CopyAIConfigDiffPreview(result.Preview)
result.Dispatch = CopyServerConfigWriteDispatch(result.Dispatch)
return result
}