package common

import (
	globalngv1 "github.com/tidbcloud/tidb-management-service/api/spec/global/nextgen/v1"
	openapicommonv1beta1 "github.com/tidbcloud/tidb-management-service/api/spec/tidb_cloud_open_api/common/v1beta1"
)

// ConvertClusterState converts the internal nextgen state to the user-facing state used by /tidbs.
func ConvertClusterState(
	state globalngv1.Cluster_State,
	health globalngv1.Cluster_HealthState,
) openapicommonv1beta1.ClusterState {
	if health == globalngv1.Cluster_HEALTH_STATE_UNSPECIFIED && state == globalngv1.Cluster_STATE_UNSPECIFIED {
		return openapicommonv1beta1.ClusterState_INACTIVE
	}

	switch state {
	case globalngv1.Cluster_STATE_UNSPECIFIED:
		return openapicommonv1beta1.ClusterState_CLUSTER_STATE_UNSPECIFIED
	case globalngv1.Cluster_AVAILABLE:
		return openapicommonv1beta1.ClusterState_ACTIVE
	case globalngv1.Cluster_CREATING:
		return openapicommonv1beta1.ClusterState_CREATING
	case globalngv1.Cluster_MODIFYING:
		return openapicommonv1beta1.ClusterState_MODIFYING
	case globalngv1.Cluster_DELETED:
		return openapicommonv1beta1.ClusterState_DELETED
	case globalngv1.Cluster_PAUSING:
		return openapicommonv1beta1.ClusterState_PAUSING
	case globalngv1.Cluster_PAUSED:
		return openapicommonv1beta1.ClusterState_PAUSED
	case globalngv1.Cluster_RESUMING:
		return openapicommonv1beta1.ClusterState_RESUMING
	default:
		return openapicommonv1beta1.ClusterState_CLUSTER_STATE_UNSPECIFIED
	}
}
