package store import ( "errors" bolt "go.etcd.io/bbolt" ) // ErrNoSharedVar is returned by Store.SharedVar when there is no such variable. var ErrNoSharedVar = errors.New("no such shared variable") func init() { initDB["initialize shared variable table"] = func(tx *bolt.Tx) error { _, err := tx.CreateBucketIfNotExists([]byte(bucketSharedVar)) return err } } // SharedVar gets the value of a shared variable. func (s *dbStore) SharedVar(n string) (string, error) { var value string err := s.db.View(func(tx *bolt.Tx) error { b := tx.Bucket([]byte(bucketSharedVar)) v := b.Get([]byte(n)) if v == nil { return ErrNoSharedVar } value = string(v) return nil }) return value, err } // SetSharedVar sets the value of a shared variable. func (s *dbStore) SetSharedVar(n, v string) error { return s.db.Update(func(tx *bolt.Tx) error { b := tx.Bucket([]byte(bucketSharedVar)) return b.Put([]byte(n), []byte(v)) }) } // DelSharedVar deletes a shared variable. func (s *dbStore) DelSharedVar(n string) error { return s.db.Update(func(tx *bolt.Tx) error { b := tx.Bucket([]byte(bucketSharedVar)) return b.Delete([]byte(n)) }) }