2023-04-18 14:24:20 +08:00
|
|
|
package leveldb
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/syndtr/goleveldb/leveldb"
|
|
|
|
"github.com/tursom/GoCollections/exceptions"
|
|
|
|
"github.com/tursom/GoCollections/lang"
|
|
|
|
|
2023-04-18 15:10:17 +08:00
|
|
|
"gitea.tursom.cn/tursom/kvs/kv"
|
2023-04-18 14:24:20 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
type (
|
|
|
|
leveldbKVS struct {
|
|
|
|
lang.BaseObject
|
|
|
|
db *leveldb.DB
|
|
|
|
}
|
|
|
|
)
|
|
|
|
|
|
|
|
func New(db *leveldb.DB) kv.Store[[]byte, []byte] {
|
|
|
|
return &leveldbKVS{db: db}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (l *leveldbKVS) Put(key []byte, value []byte) exceptions.Exception {
|
|
|
|
if err := l.db.Put(key, value, nil); err != nil {
|
|
|
|
return exceptions.Package(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (l *leveldbKVS) Get(key []byte) ([]byte, exceptions.Exception) {
|
|
|
|
value, err := l.db.Get(key, nil)
|
|
|
|
if err != nil {
|
|
|
|
return nil, exceptions.Package(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
return value, nil
|
|
|
|
}
|