package data

import (
	"github.com/tidbcloud/shared-provider/pkg/utils/labels"
	"sigs.k8s.io/controller-runtime/pkg/client"
)

type Patch interface {
	Patch(obj client.Object) client.Object
}

type CommonPatch func(obj client.Object) client.Object

func (p CommonPatch) Patch(obj client.Object) client.Object {
	return p(obj)
}

func WithKubernetesCluster(cn string) CommonPatch {
	return func(obj client.Object) client.Object {
		ls := obj.GetLabels()
		ls = labels.NewKubeClusterLabels(ls, cn)
		obj.SetLabels(ls)

		return obj
	}
}
