package region

import (
	"errors"
	"strings"

	globalcommonv1 "github.com/tidbcloud/tidb-management-service/api/spec/global/common/v1"
)

func ToUserFace(region string) string {
	region = strings.ReplaceAll(region, "_", "-")
	return strings.ToLower(region)
}

func ToEnumFormat(region string) string {
	region = strings.ReplaceAll(region, "-", "_")
	return strings.ToUpper(region)
}

func ToEnumFormats(region []string) []string {
	if len(region) == 0 {
		return nil
	}
	result := make([]string, len(region))
	for i, r := range region {
		result[i] = ToEnumFormat(r)
	}
	return result
}

func IsEqual(region1, region2 string) bool {
	return ToUserFace(region1) == ToUserFace(region2)
}

func Validate(region string) error {
	if region == "" {
		return errors.New("region is empty")
	}
	region = ToEnumFormat(region)
	value, ok := globalcommonv1.Region_Name_value[region]
	if !ok {
		return errors.New("region is not valid")
	}

	if value == 0 {
		return errors.New("region is not valid")
	}

	return nil
}
