open key-database deterministic

This commit is contained in:
6543 2021-12-03 04:15:48 +01:00
parent 796f24262e
commit 5ca5020cfa
No known key found for this signature in database
GPG key ID: C99B82E40B027BAE
8 changed files with 94 additions and 48 deletions

View file

@ -3,10 +3,9 @@ package database
import (
"bytes"
"encoding/gob"
"github.com/akrylysov/pogreb"
)
func PogrebPut(db *pogreb.DB, name []byte, obj interface{}) {
func PogrebPut(db KeyDB, name []byte, obj interface{}) {
var resGob bytes.Buffer
resEnc := gob.NewEncoder(&resGob)
err := resEnc.Encode(obj)
@ -19,7 +18,7 @@ func PogrebPut(db *pogreb.DB, name []byte, obj interface{}) {
}
}
func PogrebGet(db *pogreb.DB, name []byte, obj interface{}) bool {
func PogrebGet(db KeyDB, name []byte, obj interface{}) bool {
resBytes, err := db.Get(name)
if err != nil {
panic(err)

View file

@ -0,0 +1,12 @@
package database
import "github.com/akrylysov/pogreb"
type KeyDB interface {
Sync() error
Put(key []byte, value []byte) error
Get(key []byte) ([]byte, error)
Delete(key []byte) error
Compact() (pogreb.CompactionResult, error)
Items() *pogreb.ItemIterator
}

19
server/database/setup.go Normal file
View file

@ -0,0 +1,19 @@
package database
import (
"fmt"
"github.com/akrylysov/pogreb"
"github.com/akrylysov/pogreb/fs"
"time"
)
func New(path string) (KeyDB, error) {
if path == "" {
return nil, fmt.Errorf("path not set")
}
return pogreb.Open(path, &pogreb.Options{
BackgroundSyncInterval: 30 * time.Second,
BackgroundCompactionInterval: 6 * time.Hour,
FileSystem: fs.OSMMap,
})
}