Files
nabarr/cache/get.go

40 lines
751 B
Go
Raw Normal View History

package cache
import (
"fmt"
2021-02-19 22:20:02 +00:00
"github.com/dgraph-io/badger/v3"
)
func (c *Client) Get(bucket string, key string) ([]byte, error) {
var value []byte
2021-02-19 22:20:02 +00:00
if err := c.db.View(func(txn *badger.Txn) error {
// get key
v, err := txn.Get([]byte(fmt.Sprintf("%s_%s", bucket, key)))
if err != nil {
return fmt.Errorf("%v: %v: get error: %w", bucket, key, err)
}
// validate value
if v.IsDeletedOrExpired() {
return fmt.Errorf("%v: %v: get: key does not exist", bucket, key)
}
// read value
err = v.Value(func(val []byte) error {
value = val
return nil
})
if err != nil {
2021-02-19 22:20:02 +00:00
return fmt.Errorf("%v: %v: get: value error: %w", bucket, key, err)
}
2021-02-19 22:20:02 +00:00
return nil
}); err != nil {
return nil, err
}
return value, nil
}