package operator

import (
	"fmt"
)

var (
	RegistryPrefix      string
	TiDBOperatorVersion string
)

const (
	PingCAPRegistryPrefix        = "pingcap"
	PingCAPPrivateRegistryPrefix = "hub.pingcap.net/pingcap"
	MySQLClientRegistryPrefix    = "tnir"
	GrafanaRegistryPrefix        = "grafana"
	PrometheusRegistryPrefix     = "prom"
)

const (
	TiDBOperatorImage           = "tidb-operator"
	TiDBEnterpriseImage         = "tidb-enterprise"
	GrafanaImage                = "grafana"
	PrometheusImage             = "prometheus"
	BusyboxImage                = "busybox"
	TiDBMonitorReloaderImage    = "tidb-monitor-reloader"
	MySQLClientImage            = "mysqlclient"
	TiDBMonitorInitializerImage = "tidb-monitor-initializer"
)

var (
	GrafanaVersion             = "6.0.1"
	PrometheusVersion          = "v2.11.1"
	BusyboxVersion             = "1.31.1"
	TiDBMonitorReloaderVersion = "v1.0.1"
	MySQLClientVersion         = "latest"
)

func getImage(defaultRegistryPrefix, image, version string) string {
	return fmt.Sprintf("%s:%s", getBaseImage(defaultRegistryPrefix, image), version)
}

func getBaseImage(defaultRegistryPrefix, image string) string {
	if RegistryPrefix == "" {
		if defaultRegistryPrefix == "" {
			return fmt.Sprintf("%s", image)
		}
		return fmt.Sprintf("%s/%s", defaultRegistryPrefix, image)
	}
	return fmt.Sprintf("%s/%s", RegistryPrefix, image)
}

func UIntPtr(i uint) *uint {
	return &i
}

func UInt32Ptr(i uint32) *uint32 {
	return &i
}

func UInt64Ptr(i uint64) *uint64 {
	return &i
}
