// 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 (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 (d *datastore) Delete(key ds.Key) (err error) { // leveldb Delete will not return an error if the key doesn't // exist (see https://github.com/syndtr/goleveldb/issues/109), // so check that the key exists first and if not return an // error exists, err := d.DB.Has(key.Bytes(), nil) if !exists { return ds.ErrNotFound } else if err != nil { return err } return d.DB.Delete(key.Bytes(), nil) }
func (d *datastore) Has(key ds.Key) (exists bool, err error) { return d.DB.Has(key.Bytes(), nil) }