package clientfake

import (
	"context"

	"github.com/tidbcloud/aws-shared-provider/pkg/tidbpool"
	"github.com/tidbcloud/aws-shared-provider/pkg/types"
	"github.com/tidbcloud/aws-shared-provider/pkg/utils"
	corev1 "k8s.io/api/core/v1"
)

type FakeTidbPool struct {
	TidbPod       *corev1.Pod
	PoolNamespace string
	AbnormalPods  []corev1.Pod
	Revision      string
	MinSize       int
	MaxSize       int
}

func (fp *FakeTidbPool) Namespace() string {
	return fp.PoolNamespace
}

func (fp *FakeTidbPool) GetPool(ctx context.Context) *tidbpool.TidbPool {
	fp.TidbPod.Namespace = fp.PoolNamespace
	fp.TidbPod.GenerateName = types.TidbServerNamePrefix + fp.Revision + "-"
	fp.TidbPod.Labels = utils.UpdateMap(fp.TidbPod.Labels, types.TidbServerRevision, fp.Revision)
	return &tidbpool.TidbPool{
		TidbPod:  fp.TidbPod,
		Revision: fp.Revision,
		MinSize:  fp.MinSize,
		MaxSize:  fp.MaxSize,
	}
}

func (fp *FakeTidbPool) GetAbnormalPodList(ctx context.Context) ([]corev1.Pod, error) {
	return fp.AbnormalPods, nil
}
