package api

import (
	cloudv1 "github.com/tidbcloud/infra-api/api/v1"
)

func GetInstanceTypeScalePhase(cluster *cloudv1.Cluster, componentType cloudv1.ComponentType) cloudv1.InstanceTypeScalePhase {
	if cluster.Status.DB == nil {
		return cloudv1.InstanceTypeScalePhaseNone
	}

	switch componentType {
	case cloudv1.ComponentPD:
		if cluster.Status.DB.PD == nil {
			return cloudv1.InstanceTypeScalePhaseNone
		}
		return cluster.Status.DB.PD.InstanceTypeScalePhase
	case cloudv1.ComponentTiDB:
		if cluster.Status.DB.TiDB == nil {
			return cloudv1.InstanceTypeScalePhaseNone
		}
		return cluster.Status.DB.TiDB.InstanceTypeScalePhase
	case cloudv1.ComponentTiKV:
		if cluster.Status.DB.TiKV == nil {
			return cloudv1.InstanceTypeScalePhaseNone
		}
		return cluster.Status.DB.TiKV.InstanceTypeScalePhase
	case cloudv1.ComponentTiProxy:
		if cluster.Status.DB.TiProxy == nil {
			return cloudv1.InstanceTypeScalePhaseNone
		}
		return cluster.Status.DB.TiProxy.InstanceTypeScalePhase
	case cloudv1.ComponentTiFlash:
		if cluster.Status.DB.TiFlash == nil {
			return cloudv1.InstanceTypeScalePhaseNone
		}
		return cluster.Status.DB.TiFlash.InstanceTypeScalePhase
	}
	return cloudv1.InstanceTypeScalePhaseNone
}
