package node_controller

import (
	"k8s.io/apimachinery/pkg/api/resource"

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

type AdminTiDB struct {
	TiDB cloudv1.ClusterComponent
}

func (c *AdminTiDB) NeedSuspend(base *cloudv1.SuspendAction) bool {
	return false
}

func (c *AdminTiDB) GetSuspendActions(base *cloudv1.SuspendAction) *cloudv1.SuspendAction {
	return nil
}

func (c *AdminTiDB) GetReplicas() int {
	// TODO: gitops?
	return 1
}

func (c *AdminTiDB) GetInstanceType() string {
	return c.TiDB.GetInstanceType()
}

func (c *AdminTiDB) GetComponentType() cloudv1.ComponentType {
	return cloudv1.ComponentAdminTiDB
}

func (c *AdminTiDB) GetStorageClassName() (string, bool) {
	return c.TiDB.GetStorageClassName()
}

func (c *AdminTiDB) GetStorageSize() (*resource.Quantity, bool) {
	return c.TiDB.GetStorageSize()
}

func (c *AdminTiDB) GetUseLocalStorage() bool {
	return false
}

func (c *AdminTiDB) SetReplicas(replicas int) {
	panic("not supported")
}

func (c *AdminTiDB) SetInstanceType(instanceType string) {
	c.TiDB.SetInstanceType(instanceType)
}

func (c *AdminTiDB) SetStorageClassName(className string) {
	c.TiDB.SetStorageClassName(className)
}

func (c *AdminTiDB) SetStorageSize(size resource.Quantity) {
	c.TiDB.SetStorageSize(size)
}

func (c *AdminTiDB) SetUseLocalStorage(useLocalStorage bool) {
	c.TiDB.SetUseLocalStorage(useLocalStorage)
}
