package service import ( "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 { return &DbServiceImpl{} } func (this *DbServiceImpl) Create(conf *model.GenTool) error { 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 }