package policer

import (
	"github.com/nspcc-dev/neofs-api-go/pkg/object"
	"github.com/nspcc-dev/neofs-node/pkg/local_object_storage/localstore"
)

type jobQueue struct {
	localStorage *localstore.Storage
}

func (q *jobQueue) Select(limit int) ([]*object.Address, error) {
	// TODO: optimize the logic for selecting objects
	// We can prioritize objects for migration, newly arrived objects, etc.
	// It is recommended to make changes after updating the metabase

	res := make([]*object.Address, 0, limit)

	if err := q.localStorage.Iterate(nil, func(meta *localstore.ObjectMeta) bool {
		res = append(res, meta.Head().Address())

		return len(res) >= limit
	}); err != nil {
		return nil, err
	}

	return res, nil
}