package tidbgroup

import (
	"context"

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

type Filter struct {
	Ids          []uint64
	ClusterIds   []uint64
	ShowDeleted  bool
	DisplayNames []string
	Default      *bool
}

type Repo interface {
	Create(ctx context.Context, tidbGroup *entity.TidbGroup) bizerr.BizError
	Save(ctx context.Context, tidbGroup *entity.TidbGroup) bizerr.BizError
	Load(ctx context.Context, clusterID, id uint64) (*entity.TidbGroup, bizerr.BizError)
	Delete(ctx context.Context, tidbGroup *entity.TidbGroup) bizerr.BizError
	DeleteByClusterId(ctx context.Context, clusterID uint64) bizerr.BizError
	Query(ctx context.Context, filter *Filter) ([]*entity.TidbGroup, bizerr.BizError)
}
