123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- package manager
- import (
- "github.com/syndtr/goleveldb/leveldb"
- "github.com/syndtr/goleveldb/leveldb/util"
- )
- // implement kv interface backed by leveldb
- type leveldbAdapter struct {
- db *leveldb.DB
- }
- func (b *leveldbAdapter) InitBucket(bucket string) (err error) {
- // no-op
- return
- }
- func (b *leveldbAdapter) Get(bucket string, key string) (v []byte, err error) {
- v, err = b.db.Get([]byte(bucket+key), nil)
- return
- }
- func (b *leveldbAdapter) GetAll(bucket string) (m map[string][]byte, err error) {
- it := b.db.NewIterator(util.BytesPrefix([]byte(bucket)), nil)
- defer it.Release()
- m = make(map[string][]byte)
- for it.Next() {
- k := string(it.Key())
- actualKey := k[len(bucket):]
- // it.Value() changes on next iteration
- val := it.Value()
- v := make([]byte, len(val))
- copy(v, val)
- m[actualKey] = v
- }
- return
- }
- func (b *leveldbAdapter) Put(bucket string, key string, value []byte) error {
- err := b.db.Put([]byte(bucket+key), []byte(value), nil)
- return err
- }
- func (b *leveldbAdapter) Delete(bucket string, key string) error {
- err := b.db.Delete([]byte(bucket+key), nil)
- return err
- }
- func (b *leveldbAdapter) Close() error {
- return b.db.Close()
- }
|