refactor db package and move main package
This commit is contained in:
父節點
a11070899f
當前提交
4b974b62d2
|
@ -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() {
|
|
@ -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"
|
載入中…
新增問題並參考