frostfs-node/pkg/local_object_storage/shard/exists.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 KiB
Go

package shard
import (
"github.com/nspcc-dev/neofs-api-go/pkg/object"
meta "github.com/nspcc-dev/neofs-node/pkg/local_object_storage/metabase"
)
// ExistsPrm groups the parameters of Exists operation.
type ExistsPrm struct {
addr *object.Address
}
// ExistsRes groups resulting values of Exists operation.
type ExistsRes struct {
ex bool
}
// WithAddress is an Exists option to set object checked for existence.
func (p *ExistsPrm) WithAddress(addr *object.Address) *ExistsPrm {
if p != nil {
p.addr = addr
}
return p
}
// Exists returns the fact that the object is in the shard.
func (p *ExistsRes) Exists() bool {
return p.ex
}
// Exists checks if object is presented in shard.
//
// Returns any error encountered that does not allow to
// unambiguously determine the presence of an object.
func (s *Shard) Exists(prm *ExistsPrm) (*ExistsRes, error) {
exists, err := s.objectExists(prm.addr)
return &ExistsRes{
ex: exists,
}, err
}
func (s *Shard) objectExists(addr *object.Address) (bool, error) {
return meta.Exists(s.metaBase, addr)
}