package repository

import (
	"context"

	"github.com/tidbcloud/tidb-management-service/tidb-mgmt-service/domain/entity"
)

//go:generate go run go.uber.org/mock/mockgen@latest -source=$GOFILE -package=mock_$GOPACKAGE -destination=./mock_$GOPACKAGE/mock_dedicated_to_premium_precheck.go
type DedicatedToPremiumPrecheckRepo interface {
	Create(ctx context.Context, precheck *entity.DedicatedToPremiumPrecheck) error
	Get(ctx context.Context, id uint64) (*entity.DedicatedToPremiumPrecheck, error)
	Count(ctx context.Context, filter *DedicatedToPremiumPrecheckFilter) (uint32, error)
	List(ctx context.Context, filter *DedicatedToPremiumPrecheckFilter) ([]*entity.DedicatedToPremiumPrecheck, error)
	GetItem(ctx context.Context, precheckID uint64, category entity.PrecheckCategory, checkKey string) (*entity.DedicatedToPremiumPrecheckItem, error)
	MarkOperationRunning(ctx context.Context, precheckID uint64, allowFromFailed bool) error
	UpdateItem(ctx context.Context, item *entity.DedicatedToPremiumPrecheckItem) error
	UpdateOperation(ctx context.Context, precheck *entity.DedicatedToPremiumPrecheck) error
}

type DedicatedToPremiumPrecheckFilter struct {
	SourceClusterID uint64
	Limit           int
	Offset          int
}
