namespace EntKube.Web.Data;

/// <summary>
/// How a deployment is defined — whether through manual form entry,
/// raw YAML manifests, or a Helm chart with dynamic values.
/// </summary>
public enum DeploymentType
{
    /// <summary>
    /// Built via form: containers, services, PVCs, env vars, volume mounts.
    /// The platform generates K8s manifests from the structured definition.
    /// </summary>
    Manual,

    /// <summary>
    /// Raw YAML manifests pasted or uploaded by the user.
    /// Supports Deployment, Service, PVC, ConfigMap, etc.
    /// </summary>
    Yaml,

    /// <summary>
    /// A Helm chart from any repository. The user provides the repo URL,
    /// chart name, version, and dynamic values.
    /// </summary>
    HelmChart
}

/// <summary>
/// The synchronization status of a deployment, modeled after ArgoCD.
/// Tells us whether the desired state matches the live cluster state.
/// </summary>
public enum SyncStatus
{
    Unknown,
    Synced,
    OutOfSync,
    Syncing,
    Failed
}

/// <summary>
/// The health status of a deployment's resources, modeled after ArgoCD.
/// Tells us whether the workload is actually running correctly.
/// </summary>
public enum HealthStatus
{
    Unknown,
    Healthy,
    Progressing,
    Degraded,
    Missing,
    Suspended
}
