package infraapi

import "fmt"

type ClusterNameGetter struct {
	InfraProvider        string
	InfraAPIObjNamespace string
	ClusterName          string
}

func (g *ClusterNameGetter) ClusterTiDBServiceName() string {
	return fmt.Sprintf("%s-tidb", g.ClusterServicePrefix())
}

func (g *ClusterNameGetter) TiDBNamespacedServiceName() string {
	return fmt.Sprintf("%s-tidb.%s.svc", g.ClusterServicePrefix(), g.ClusterNamespace())
}

func (g *ClusterNameGetter) ClusterPDServiceName() string {
	return fmt.Sprintf("%s-pd", g.ClusterServicePrefix())
}

func (g *ClusterNameGetter) ClusterServicePrefix() string {
	switch g.InfraProvider {
	case ProviderTypeAWSDevTier:
		return fmt.Sprintf("db%s", g.ClusterName)
	default:
		return "db"
	}
}

func (g *ClusterNameGetter) ClusterNamespace() string {
	switch g.InfraProvider {
	case ProviderTypeAWSDevTier:
		return fmt.Sprintf("free-tier-%s", g.InfraAPIObjNamespace)
	default:
		return fmt.Sprintf("tidb%s", g.ClusterName)
	}
}
