func (d *datastore) Delete(key ds.Key) (err error) { err = d.DB.Delete(key.Bytes(), nil) if err == leveldb.ErrNotFound { return ds.ErrNotFound } return err }
// Returns ErrInvalidType if value is not of type []byte. // // Note: using sync = false. // see http://godoc.org/github.com/syndtr/goleveldb/leveldb/opt#WriteOptions func (d *datastore) Put(key ds.Key, value interface{}) (err error) { val, ok := value.([]byte) if !ok { return ds.ErrInvalidType } return d.DB.Put(key.Bytes(), val, nil) }
func (bd *boltDatastore) Put(key ds.Key, val interface{}) error { bval, ok := val.([]byte) if !ok { return ds.ErrInvalidType } return bd.db.Update(func(tx *bolt.Tx) error { return tx.Bucket(bd.bucketName).Put(key.Bytes(), bval) }) }
func (bd *boltDatastore) Has(key ds.Key) (bool, error) { var found bool err := bd.db.View(func(tx *bolt.Tx) error { val := tx.Bucket(bd.bucketName).Get(key.Bytes()) found = (val != nil) return nil }) return found, err }
func (bd *boltDatastore) ConsumeValue(key ds.Key, f func([]byte) error) error { return bd.db.View(func(tx *bolt.Tx) error { mmval := tx.Bucket(bd.bucketName).Get(key.Bytes()) if mmval == nil { return ds.ErrNotFound } return f(mmval) }) }
func (d *datastore) Get(key ds.Key) (value interface{}, err error) { val, err := d.DB.Get(key.Bytes(), nil) if err != nil { if err == leveldb.ErrNotFound { return nil, ds.ErrNotFound } return nil, err } return val, nil }
func (bd *boltDatastore) Get(key ds.Key) (interface{}, error) { var out []byte err := bd.db.View(func(tx *bolt.Tx) error { mmval := tx.Bucket(bd.bucketName).Get(key.Bytes()) if mmval == nil { return ds.ErrNotFound } out = make([]byte, len(mmval)) copy(out, mmval) return nil }) if err != nil { return nil, err } return out, err }
func (d *datastore) Has(key ds.Key) (exists bool, err error) { return d.DB.Has(key.Bytes(), nil) }
// Hash a key and return the first 16 hex chars of its blake2b hash. // basically: Blake2b(key).HexString[:16] func BlakeKeyHash(key ds.Key) string { h := blake2.NewBlake2B() h.Write(key.Bytes()) d := h.Sum(nil) return fmt.Sprintf("%x", d)[:16] }
func (bd *boltDatastore) Delete(key ds.Key) error { return bd.db.Update(func(tx *bolt.Tx) error { return tx.Bucket(bd.bucketName).Delete(key.Bytes()) }) }