コード例 #1
0
ファイル: datastore.go プロジェクト: rht/go-datastore
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
}
コード例 #2
0
ファイル: datastore.go プロジェクト: rht/go-datastore
// 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)
}
コード例 #3
0
ファイル: datastore.go プロジェクト: admpub/bolt-datastore
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)
	})
}
コード例 #4
0
ファイル: datastore.go プロジェクト: admpub/bolt-datastore
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
}
コード例 #5
0
ファイル: datastore.go プロジェクト: admpub/bolt-datastore
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)
	})
}
コード例 #6
0
ファイル: datastore.go プロジェクト: rht/go-datastore
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
}
コード例 #7
0
ファイル: datastore.go プロジェクト: admpub/bolt-datastore
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
}
コード例 #8
0
ファイル: datastore.go プロジェクト: rht/go-datastore
func (d *datastore) Has(key ds.Key) (exists bool, err error) {
	return d.DB.Has(key.Bytes(), nil)
}
コード例 #9
0
ファイル: datastore.go プロジェクト: rht/go-datastore
// 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]
}
コード例 #10
0
ファイル: datastore.go プロジェクト: admpub/bolt-datastore
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())
	})
}