package main

import (
	"context"
	"fmt"

	objectcore "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/core/object"
	"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/engine"
)

type keySpaceIterator struct {
	ng  *engine.StorageEngine
	cur *engine.Cursor
}

func (it *keySpaceIterator) Next(ctx context.Context, batchSize uint32) ([]objectcore.AddressWithType, error) {
	var prm engine.ListWithCursorPrm
	prm.WithCursor(it.cur)
	prm.WithCount(batchSize)

	res, err := it.ng.ListWithCursor(ctx, prm)
	if err != nil {
		return nil, fmt.Errorf("cannot list objects in engine: %w", err)
	}

	it.cur = res.Cursor()
	return res.AddressList(), nil
}

func (it *keySpaceIterator) Rewind() {
	it.cur = nil
}