[#186] localstorage: Implement utility functions over StorageEngine

Implement Put/Get/GetRange/Select/SelectAll functions over storage
engine. These functions are going to be used by Object service.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
Leonard Lyubich 2020-11-19 11:15:49 +03:00 committed by Alex Vanin
parent 70a65c5aff
commit 9a4cd01eb8
4 changed files with 63 additions and 0 deletions

View file

@ -97,3 +97,28 @@ func (e *StorageEngine) Get(prm *GetPrm) (*GetRes, error) {
obj: obj,
}, nil
}
// Get reads object from local storage by provided address.
func Get(storage *StorageEngine, addr *objectSDK.Address) (*object.Object, error) {
res, err := storage.Get(new(GetPrm).
WithAddress(addr),
)
if err != nil {
return nil, err
}
return res.Object(), nil
}
// GetRange reads object payload range from local storage by provided address.
func GetRange(storage *StorageEngine, addr *objectSDK.Address, rng *objectSDK.Range) ([]byte, error) {
res, err := storage.Get(new(GetPrm).
WithAddress(addr).
WithPayloadRange(rng.GetOffset(), rng.GetLength()),
)
if err != nil {
return nil, err
}
return res.Object().Payload(), nil
}