Migrate to LevelDB

Signed-off-by: Yuan Si <do4suki@gmail.com>
This commit is contained in:
2023-03-30 02:49:46 +08:00
parent a64a40a236
commit 4ab72d317d
10 changed files with 189 additions and 129 deletions
+69
View File
@@ -0,0 +1,69 @@
package database
import (
"errors"
"honoka-chan/config"
"github.com/syndtr/goleveldb/leveldb"
"github.com/syndtr/goleveldb/leveldb/util"
)
type LevelDbImpl struct {
ldb *leveldb.DB
}
var (
LevelDb LevelDbImpl
err error
)
func init() {
LevelDb.InitDb()
}
func (ldb *LevelDbImpl) InitDb() {
ldb.ldb, err = leveldb.OpenFile(config.Conf.LevelDb.DataPath, nil)
if err != nil {
panic(err.Error())
}
}
func (ldb *LevelDbImpl) Get(key []byte) (res []byte, err error) {
if len(key) == 0 {
return nil, errors.New("key is null")
}
res, err = ldb.ldb.Get(key, nil)
if err != nil {
return nil, err
}
return res, nil
}
func (ldb *LevelDbImpl) Put(key, value []byte) (err error) {
if len(key) == 0 {
return errors.New("key is null")
}
err = ldb.ldb.Put(key, value, nil)
if err != nil {
return err
}
return nil
}
func (ldb *LevelDbImpl) List() (res map[string]string) {
res = make(map[string]string)
iter := ldb.ldb.NewIterator(nil, nil)
for iter.Next() {
res[string(iter.Key())] = string(iter.Value())
}
return res
}
func (ldb *LevelDbImpl) ListPrefix(prefix []byte) (res map[string]string) {
res = make(map[string]string)
iter := ldb.ldb.NewIterator(util.BytesPrefix(prefix), nil)
for iter.Next() {
res[string(iter.Key())] = string(iter.Value())
}
return res
}