frostfs-node/pkg/local_object_storage/shard/select.go
Leonard Lyubich 590745204c [#237] metabase: Structure parameters and results of all operations
All parameters and resulting values of all metabase operations are
structured in new types. The most popular scenarios for using operations are
moved to auxiliary functions.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-12-11 17:19:37 +03:00

46 lines
1.1 KiB
Go

package shard
import (
objectSDK "github.com/nspcc-dev/neofs-api-go/pkg/object"
meta "github.com/nspcc-dev/neofs-node/pkg/local_object_storage/metabase"
"github.com/pkg/errors"
)
// SelectPrm groups the parameters of Select operation.
type SelectPrm struct {
filters objectSDK.SearchFilters
}
// SelectRes groups resulting values of Select operation.
type SelectRes struct {
addrList []*objectSDK.Address
}
// WithFilters is a Select option to set the object filters.
func (p *SelectPrm) WithFilters(fs objectSDK.SearchFilters) *SelectPrm {
if p != nil {
p.filters = fs
}
return p
}
// AddressList returns list of addresses of the selected objects.
func (r *SelectRes) AddressList() []*objectSDK.Address {
return r.addrList
}
// Select selects the objects from shard that match select parameters.
//
// Returns any error encountered that
// did not allow to completely select the objects.
func (s *Shard) Select(prm *SelectPrm) (*SelectRes, error) {
addrList, err := meta.Select(s.metaBase, prm.filters)
if err != nil {
return nil, errors.Wrap(err, "could not select objects from metabase")
}
return &SelectRes{
addrList: addrList,
}, nil
}