package repository

import (
	"sigs.k8s.io/controller-runtime/pkg/client"

	"github.com/tidbcloud/infra-provider/regional-server/api/v1alpha1"
	"github.com/tidbcloud/infra-provider/regional-server/pkg/k8s"
)

// Define the PrivateLinkEndpoint-specific interfaces as aliases of the generic ones.
type PrivateLinkEndpointReaderWriter = k8s.GenericReaderWriter[*v1alpha1.PrivateLinkEndpoint, *v1alpha1.PrivateLinkEndpointList]
type PrivateLinkEndpointWriter = k8s.GenericWriter[*v1alpha1.PrivateLinkEndpoint]
type PrivateLinkEndpointReader = k8s.GenericReader[*v1alpha1.PrivateLinkEndpoint, *v1alpha1.PrivateLinkEndpointList]

func NewPrivateLinkEndpointReaderWriter(cli client.Client) PrivateLinkEndpointReaderWriter {
	return k8s.NewGenericReaderWriter[*v1alpha1.PrivateLinkEndpoint, *v1alpha1.PrivateLinkEndpointList](cli)
}

func NewPrivateLinkEndpointReader(cli client.Client) PrivateLinkEndpointReader {
	return k8s.NewGenericReader[*v1alpha1.PrivateLinkEndpoint, *v1alpha1.PrivateLinkEndpointList](cli)
}

func NewPrivateLinkEndpointWriter(cli client.Client) PrivateLinkEndpointWriter {
	return k8s.NewGenericWriter[*v1alpha1.PrivateLinkEndpoint](cli)
}
