package builder import ( zitadelv1alpha1 "gitea.corredorconect.com/software-engineering/zitadel-k8s-operator/api/v1alpha1" deployment "gitea.corredorconect.com/software-engineering/zitadel-k8s-operator/pkg/deployment" ) const ( appLabel = "app.kubernetes.io/name" instanceLabel = "app.kubernetes.io/instance" deploymentPodName = "deployment.kubernetes.io/pod-name" appZitadel = "zitadel" appLoginUI = "zitadel-login-ui" appExporter = "exporter" ) type LabelsBuilder struct { labels map[string]string } func NewLabelsBuilder() *LabelsBuilder { return &LabelsBuilder{ labels: map[string]string{}, } } func (b *LabelsBuilder) WithApp(app string) *LabelsBuilder { b.labels[appLabel] = app return b } func (b *LabelsBuilder) WithInstance(instance string) *LabelsBuilder { b.labels[instanceLabel] = instance return b } func (b *LabelsBuilder) WithZitadel(zitadel *zitadelv1alpha1.Cluster) *LabelsBuilder { return b.WithApp(appZitadel). WithInstance(zitadel.Name) } func (b *LabelsBuilder) WithLoginUI(instance *zitadelv1alpha1.Instance) *LabelsBuilder { return b.WithApp(appLoginUI). WithInstance(instance.Name) } func (b *LabelsBuilder) WithDeploymentPod(zitadel *zitadelv1alpha1.Cluster, podIndex int) *LabelsBuilder { b.labels[deploymentPodName] = deployment.PodName(zitadel.ObjectMeta, podIndex) return b } func (b *LabelsBuilder) WithLabels(labels map[string]string) *LabelsBuilder { for k, v := range labels { b.labels[k] = v } return b } func (b *LabelsBuilder) WithZitadelSelectorLabels(zitadel *zitadelv1alpha1.Cluster) *LabelsBuilder { b = b.WithZitadel(zitadel) return b } func (b *LabelsBuilder) WithLoginUISelectorLabels(instance *zitadelv1alpha1.Instance) *LabelsBuilder { b = b.WithLoginUI(instance) return b } func (b *LabelsBuilder) WithMetricsSelectorLabels(zitadel *zitadelv1alpha1.Cluster) *LabelsBuilder { return b.WithApp(appExporter). WithInstance(zitadel.Name) } func (b *LabelsBuilder) Build() map[string]string { return b.labels }