package privatelink

import (
	"context"

	"github.com/tidbcloud/tidb-management-service/nextgen-global-service/domain/entity"
	"github.com/tidbcloud/tidb-management-service/utilities/bizerr"
)

type Filter struct {
	ClusterID   uint64
	TidbGroupID uint64
}

type Repo interface {
	CreatePrivateLinkService(ctx context.Context, service *entity.PrivateLinkService) bizerr.BizError
	UpdatePrivateLinkService(ctx context.Context, service *entity.PrivateLinkService) bizerr.BizError
	ListPrivateLinkServices(ctx context.Context, filter *Filter) ([]*entity.PrivateLinkService, bizerr.BizError)
	DeletePrivateLinkService(ctx context.Context, serviceID uint64) bizerr.BizError
	GetPrivateLinkService(ctx context.Context, serviceID uint64) (*entity.PrivateLinkService, bizerr.BizError)

	CreatePrivateLinkConnection(ctx context.Context, connection *entity.PrivateLinkConnection) bizerr.BizError
	GetPrivateLinkConnection(ctx context.Context, connectionID uint64) (*entity.PrivateLinkConnection, bizerr.BizError)
	ListPrivateLinkConnections(ctx context.Context, filter *Filter) ([]*entity.PrivateLinkConnection, bizerr.BizError)
	DeletePrivateLinkConnection(ctx context.Context, connectionID uint64) bizerr.BizError
	DeletePrivateLinkConnectionByServiceID(ctx context.Context, serviceID uint64) bizerr.BizError
}
