package restore

import (
	"context"

	"github.com/tidbcloud/dataflow-service/app/repo/entity"
)

type OrderBy string

const (
	OrderByAsc  OrderBy = "asc"
	OrderByDesc OrderBy = "desc"
)

type ServerlessRestoreFilter struct {
	ClusterID           *entity.ID
	UserClusterBackupID *entity.ID
	Statuses            []entity.ServerlessRestoreStatus

	OrderByCreateTime *OrderBy
	Limit             *int
}

type ServerlessRestoreRepo interface {
	Add(ctx context.Context, restore *entity.ServerlessRestore) error
	Save(ctx context.Context, restore *entity.ServerlessRestore) error
	Load(ctx context.Context, id entity.ID) (*entity.ServerlessRestore, error)
	GetByFilter(ctx context.Context, filter *ServerlessRestoreFilter) (*entity.ServerlessRestore, error)
	ListByFilter(ctx context.Context, filter *ServerlessRestoreFilter) ([]*entity.ServerlessRestore, error)
}
