refactor db package and move main package

This commit is contained in:
kayos@tcp.direct 2021-09-07 14:43:35 -07:00
父節點 a11070899f
當前提交 4b974b62d2
共有 5 個檔案被更改,包括 68 行新增28 行删除

查看文件

@ -1,23 +0,0 @@
package casket
import (
"CokePlate/config"
"github.com/prologic/bitcask"
)
var (
DB map[string]*bitcask.Bitcask
DatabaseList = []string{"main"} //, "users"}
)
func Initialize() {
DB = make(map[string]*bitcask.Bitcask)
for _, dbname := range DatabaseList {
var err error
DB[dbname], err = bitcask.Open(config.DataDir + "/" + dbname)
if err != nil {
panic(err.Error())
}
}
}

查看文件

@ -1,9 +1,9 @@
package main
import (
"CokePlate/casket"
"CokePlate/db"
"CokePlate/config"
"CokePlate/decorate"
"CokePlate/extra"
"CokePlate/logger"
"github.com/rs/zerolog"
)
@ -12,14 +12,14 @@ var log zerolog.Logger
func init() {
config.Blueprint()
decorate.Banner()
extra.Banner()
config.PrintConfigLog()
log = logger.LogInit()
zerolog.SetGlobalLevel(zerolog.InfoLevel)
if config.Debug {
zerolog.SetGlobalLevel(zerolog.DebugLevel)
}
casket.Initialize()
db.Initialize()
}
func main() {

63
db/casket.go Normal file
查看文件

@ -0,0 +1,63 @@
package db
import (
"CokePlate/config"
"sync"
"github.com/prologic/bitcask"
)
type Backend interface {
Sync() error
Close() error
Has(key []byte) bool
Get(key []byte) ([]byte, error)
Put(key, value []byte) error
Delete(key []byte) error
}
var General *Database
type Database struct {
backend Backend
/*
bitcask and most other backends have their own mutexing
we implement our own here for any operations that are done with
cached in-memory versions of our datasets
*/
mu *sync.RWMutex
}
// Initialize starts our database engine
func Initialize() {
var casket *bitcask.Bitcask
var err error
if casket, err = bitcask.Open(config.DataDir + "/" + "data"); err != nil {
panic(err)
}
General = &Database{
backend: casket,
mu: &sync.RWMutex{},
}
}
// MustSync asserts a sync command to our underlying bitcask stores or else it will panic
func (d *Database) MustSync() {
if err := d.backend.Sync(); err != nil {
panic(err)
}
}
// Replace deletes the old value at key and replaces it with the provided parameters (meant for json buckets)
func (d *Database) Replace(key string, value []byte) error {
if err := d.backend.Delete([]byte(key)); err != nil {
return err
}
if err := d.backend.Put([]byte(key), value); err != nil {
return err
}
return nil
}

查看文件

@ -1,4 +1,4 @@
package decorate
package extra
import (
"bufio"