// Package domain contains pure domain models with no external dependencies. package domain import "time" // DeploySpec defines a deployment request. type DeploySpec struct { ProjectName string // Project identifier Image string // Container image (e.g., zot.threesix.svc:5000/myapp:latest) Domain string // Domain for ingress (e.g., myapp.threesix.ai) Port int // Container port to expose Replicas int // Number of replicas EnvVars map[string]string // Plain environment variables Secrets map[string]string // Secret environment variables (stored in K8s Secret) } // DeployStatus represents the current state of a deployment. type DeployStatus struct { ProjectName string Image string Replicas int ReadyReplicas int URL string Status DeploymentStatus CreatedAt time.Time UpdatedAt time.Time } // DeploymentStatus represents the state of a deployment. type DeploymentStatus string const ( DeploymentStatusNone DeploymentStatus = "none" // No deployment exists DeploymentStatusPending DeploymentStatus = "pending" // Deployment created, waiting for pods DeploymentStatusRunning DeploymentStatus = "running" // All pods are ready DeploymentStatusFailed DeploymentStatus = "failed" // Pods failed to start DeploymentStatusUpdating DeploymentStatus = "updating" // Rolling update in progress DeploymentStatusUnknown DeploymentStatus = "unknown" // Status could not be determined ) // IsReady returns true if the deployment is fully available. func (s DeploymentStatus) IsReady() bool { return s == DeploymentStatusRunning }