forked from TrueCloudLab/frostfs-node
[#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:
parent
70a65c5aff
commit
9a4cd01eb8
4 changed files with 63 additions and 0 deletions
|
@ -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
|
||||
}
|
||||
|
|
|
@ -73,3 +73,15 @@ func (e *StorageEngine) Head(prm *HeadPrm) (*HeadRes, error) {
|
|||
head: head,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// Head reads object header from local storage by provided address.
|
||||
func Head(storage *StorageEngine, addr *objectSDK.Address) (*object.Object, error) {
|
||||
res, err := storage.Head(new(HeadPrm).
|
||||
WithAddress(addr),
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return res.Header(), nil
|
||||
}
|
||||
|
|
|
@ -89,3 +89,12 @@ func (e *StorageEngine) objectExists(obj *object.Object, shards []*shard.Shard)
|
|||
|
||||
return exists
|
||||
}
|
||||
|
||||
// Put writes provided object to local storage.
|
||||
func Put(storage *StorageEngine, obj *object.Object) error {
|
||||
_, err := storage.Put(new(PutPrm).
|
||||
WithObject(obj),
|
||||
)
|
||||
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -58,3 +58,20 @@ func (e *StorageEngine) Select(prm *SelectPrm) (*SelectRes, error) {
|
|||
addrList: addrList,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// Select selects objects from local storage using provided filters.
|
||||
func Select(storage *StorageEngine, fs object.SearchFilters) ([]*object.Address, error) {
|
||||
res, err := storage.Select(new(SelectPrm).
|
||||
WithFilters(fs),
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return res.AddressList(), nil
|
||||
}
|
||||
|
||||
// SelectAll selects all objects from local storage.
|
||||
func SelectAll(storage *StorageEngine) ([]*object.Address, error) {
|
||||
return Select(storage, object.SearchFilters{})
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue