go_dreamfactory/cmd/v2/service/dbServer.go
2022-08-18 17:10:02 +08:00

72 lines
1.2 KiB
Go

package service
import (
"encoding/json"
"fmt"
"go_dreamfactory/cmd/v2/model"
"log"
"sync"
"time"
"github.com/boltdb/bolt"
)
type DbService interface {
Create(conf *model.GenTool) error
Update() error
}
type DbServiceImpl struct {
}
func NewDbService() DbService {
GetBoltDb()
return &DbServiceImpl{}
}
func (this *DbServiceImpl) Create(conf *model.GenTool) error {
defer boltDb.Close()
_ = boltDb.Update(func(tx *bolt.Tx) error {
b, err2 := json.Marshal(conf)
if err2 != nil {
return err
}
return bucket.Put([]byte("gen"), b)
})
return nil
}
func (this *DbServiceImpl) Update() error {
return nil
}
var (
boltDb *bolt.DB
bucket *bolt.Bucket
once sync.Once
err error
)
func GetBoltDb() *bolt.DB {
once.Do(func() {
boltDb, err = bolt.Open("my.db", 0600, &bolt.Options{Timeout: 1 * time.Second})
if err != nil {
log.Fatal(err)
}
boltDb.Update(func(tx *bolt.Tx) error {
b := tx.Bucket([]byte("robotBucket"))
if b != nil {
bucket = b
} else {
bucket, err = tx.CreateBucket([]byte("robotBucket"))
if err != nil {
return fmt.Errorf("create bucket: %s", err)
}
}
return nil
})
})
return boltDb
}