package spu

import (
	"context"

	globalcommonv1 "github.com/tidbcloud/tidb-management-service/api/spec/global/common/v1"
	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 InstanceMuFilter struct {
	Provider globalcommonv1.CloudProvider_Name
	CpuArchs []globaldedicatedv1.InstanceMu_CpuArch
}

type InstanceMuRepo interface {
	Save(ctx context.Context, instanceType *entity.InstanceMu) (uint, bizerr.BizError)
	Query(ctx context.Context, filter InstanceMuFilter) ([]*entity.InstanceMu, bizerr.BizError)
	Get(ctx context.Context, instanceType string) (*entity.InstanceMu, bizerr.BizError)
	GetByID(ctx context.Context, id uint64) (*entity.InstanceMu, bizerr.BizError)
	Delete(ctx context.Context, id uint64) bizerr.BizError
}
