package labels

import (
	"fmt"
	"strings"

	"sigs.k8s.io/controller-runtime/pkg/client"
	"sigs.k8s.io/controller-runtime/pkg/client/apiutil"

	"github.com/tidbcloud/infra-provider/regional-server/pkg/consts"
	"github.com/tidbcloud/infra-provider/regional-server/pkg/scheme"
)

func NewOwnerLabels(owner client.Object) map[string]string {
	gvk, err := apiutil.GVKForObject(owner, scheme.Scheme)
	if err != nil {
		panic(fmt.Sprintf("get gvk for %T: %v", owner, err))
	}
	return map[string]string{
		consts.LabelKeyOwnedBy:   strings.ToLower(gvk.Kind),
		consts.LabelKeyNamespace: owner.GetNamespace(),
		consts.LabelKeyName:      owner.GetName(),
		consts.LabelKeyUID:       string(owner.GetUID()),
	}
}
