-
Notifications
You must be signed in to change notification settings - Fork 0
/
kvstore.go
41 lines (35 loc) · 1015 Bytes
/
kvstore.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package kvstore
import (
"github.com/dnerochain/dnero/common"
"github.com/dnerochain/dnero/rlp"
"github.com/dnerochain/dnero/store"
"github.com/dnerochain/dnero/store/database"
)
// NewKVStore create a new instance of KVStore.
func NewKVStore(db database.Database) store.Store {
return &KVStore{db}
}
// KVStore a Database wrapped object.
type KVStore struct {
db database.Database
}
// Put upserts key/value into DB
func (store *KVStore) Put(key common.Bytes, value interface{}) error {
encodedValue, err := rlp.EncodeToBytes(value)
if err != nil {
return err
}
return store.db.Put(key, encodedValue)
}
// Delete deletes key entry from DB
func (store *KVStore) Delete(key common.Bytes) error {
return store.db.Delete(key)
}
// Get looks up DB with key and returns result into value (passed by reference)
func (store *KVStore) Get(key common.Bytes, value interface{}) error {
encodedValue, err := store.db.Get(key)
if err != nil {
return err
}
return rlp.DecodeBytes(encodedValue, value)
}