package quota

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 TenantQuotaFilter struct {
	TenantID  uint64
	Component globaldedicatedv1.ComponentType
}

type TenantClusterQuotaRepo interface {
	Load(ctx context.Context, tenantID uint64) (*entity.TenantClusterQuota, bizerr.BizError)
	Max4CTikvCount(ctx context.Context) int
}

type TenantClusterComponentQuotaRepo interface {
	Query(ctx context.Context, filter TenantQuotaFilter) ([]*entity.TenantComponentQuota, bizerr.BizError)
	Save(ctx context.Context, en *entity.TenantComponentQuota) bizerr.BizError
}
