package endpoint

import (
	"context"

	globaldedicatedv1 "github.com/tidbcloud/tidb-management-service/api/spec/global/dedicated/v1"
	"github.com/tidbcloud/tidb-management-service/dedicated-global-service/domain/entity"
	"github.com/tidbcloud/tidb-management-service/utilities/bizerr"
)

type VpcPeeringFilter struct {
	CloudProviderNames []entity.CloudProviderName
	RegionNames        []entity.RegionName
	IDs                []uint64
	ProjectIds         []uint64
	OrganizationIds    []uint64
	Types              []globaldedicatedv1.VpcPeering_Type
}

type VpcPeeringRepo interface {
	Create(ctx context.Context, peering *entity.VpcPeering) bizerr.BizError
	Load(ctx context.Context, cloudProvider entity.CloudProviderName, id uint64) (*entity.VpcPeering, bizerr.BizError)
	Delete(ctx context.Context, peering *entity.VpcPeering) bizerr.BizError
	Query(
		ctx context.Context,
		filter *VpcPeeringFilter,
		pager *globaldedicatedv1.Pager,
		sorter *globaldedicatedv1.Sorter,
	) ([]*entity.VpcPeering, bizerr.BizError)
}
