package repo

import (
	"context"

	"github.com/tidbcloud/cluster-service-ng/domain/entity"
)

// ScaleOperationRepo is scoped to M1 (horizontal scale-out cancel).
// FindActiveByComponent and ListNonTerminal exist because the active-lock
// check and the (future) progress-refresh worker already need them. A
// general-purpose, filterable List (backing a public ListScaleOperations RPC)
// and retention-cleanup methods are added only when a caller needs those.
type ScaleOperationRepo interface {
	Create(ctx context.Context, operation *entity.ScaleOperation) error
	LoadByID(ctx context.Context, sharedPoolID, scaleOperationID string, includeDeleted bool) (*entity.ScaleOperation, error)
	Save(ctx context.Context, operation *entity.ScaleOperation) error
	FindActiveByComponent(ctx context.Context, sharedPoolID, componentID string) ([]*entity.ScaleOperation, error)
	ListNonTerminal(ctx context.Context, limit int) ([]*entity.ScaleOperation, error)
}
