Trying to auto-open & auto-close db...
Had to comment changes until fixed.
This commit is contained in:
parent
a617c771d9
commit
9129007194
104
boltrest.go
104
boltrest.go
@ -44,13 +44,25 @@ func Create(filename string) (*DB, error) {
|
||||
// Open opens the DB so things can be done
|
||||
func (b *DB) Open() error {
|
||||
var err error
|
||||
b.localDB, err = Open(b.localFile, 0644, nil)
|
||||
if !b.isOpen {
|
||||
b.localDB, err = bolt.Open(b.localFile, 0644, nil)
|
||||
if err == nil {
|
||||
b.isOpen = true
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
// Close closes the DB
|
||||
func (b *DB) Close() error {
|
||||
return b.localDB.Close()
|
||||
var err error
|
||||
if b.isOpen {
|
||||
err = b.localDB.Close()
|
||||
if err == nil {
|
||||
b.isOpen = false
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
// Offline sets this DB to offline mode
|
||||
@ -61,8 +73,18 @@ func (b *DB) Offline() {
|
||||
|
||||
// MkBucketPath builds all buckets in the string slice
|
||||
func (b *DB) MkBucketPath(path []string) error {
|
||||
var err error
|
||||
/*
|
||||
if !b.isOpen {
|
||||
err = b.Open()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer b.Close()
|
||||
}
|
||||
*/
|
||||
b.RefreshDB()
|
||||
err := b.localDB.Update(func(tx *bolt.Tx) error {
|
||||
err = b.localDB.Update(func(tx *bolt.Tx) error {
|
||||
var err error
|
||||
bkt := tx.Bucket([]byte(path[0]))
|
||||
if bkt == nil {
|
||||
@ -98,6 +120,15 @@ func (b *DB) MkBucketPath(path []string) error {
|
||||
func (b *DB) GetValue(path []string, key string) (string, error) {
|
||||
var err error
|
||||
var ret string
|
||||
/*
|
||||
if !b.isOpen {
|
||||
err = b.Open()
|
||||
if err != nil {
|
||||
return ret, err
|
||||
}
|
||||
defer b.Close()
|
||||
}
|
||||
*/
|
||||
b.RefreshDB()
|
||||
b.localDB.View(func(tx *bolt.Tx) error {
|
||||
bkt := tx.Bucket([]byte(path[0]))
|
||||
@ -121,8 +152,18 @@ func (b *DB) GetValue(path []string, key string) (string, error) {
|
||||
// SetValue sets the value at path to val
|
||||
// path is a slice of tokens
|
||||
func (b *DB) SetValue(path []string, key, val string) error {
|
||||
var err error
|
||||
/*
|
||||
if !b.isOpen {
|
||||
err = b.Open()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer b.Close()
|
||||
}
|
||||
*/
|
||||
b.RefreshDB()
|
||||
err := b.MkBucketPath(path)
|
||||
err = b.MkBucketPath(path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -202,10 +243,18 @@ func (b *DB) SetTimestamp(path []string, key string, val time.Time) error {
|
||||
|
||||
// GetBucketList returns a list of all sub-buckets at path
|
||||
func (b *DB) GetBucketList(path []string) ([]string, error) {
|
||||
b.RefreshDB()
|
||||
|
||||
var err error
|
||||
var ret []string
|
||||
/*
|
||||
if !b.isOpen {
|
||||
err = b.Open()
|
||||
if err != nil {
|
||||
return ret, err
|
||||
}
|
||||
defer b.Close()
|
||||
}
|
||||
*/
|
||||
b.RefreshDB()
|
||||
err = b.localDB.Update(func(tx *bolt.Tx) error {
|
||||
bkt := tx.Bucket([]byte(path[0]))
|
||||
if bkt == nil {
|
||||
@ -238,10 +287,18 @@ func (b *DB) GetBucketList(path []string) ([]string, error) {
|
||||
|
||||
// GetKeyList returns a list of all keys at path
|
||||
func (b *DB) GetKeyList(path []string) ([]string, error) {
|
||||
b.RefreshDB()
|
||||
|
||||
var err error
|
||||
var ret []string
|
||||
/*
|
||||
if !b.isOpen {
|
||||
err = b.Open()
|
||||
if err != nil {
|
||||
return ret, err
|
||||
}
|
||||
defer b.Close()
|
||||
}
|
||||
*/
|
||||
b.RefreshDB()
|
||||
err = b.localDB.Update(func(tx *bolt.Tx) error {
|
||||
bkt := tx.Bucket([]byte(path[0]))
|
||||
if bkt == nil {
|
||||
@ -272,8 +329,17 @@ func (b *DB) GetKeyList(path []string) ([]string, error) {
|
||||
|
||||
// DeletePair deletes the pair with key at path
|
||||
func (b *DB) DeletePair(path []string, key string) error {
|
||||
b.RefreshDB()
|
||||
var err error
|
||||
/*
|
||||
if !b.isOpen {
|
||||
err = b.Open()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer b.Close()
|
||||
}
|
||||
*/
|
||||
b.RefreshDB()
|
||||
err = b.localDB.Update(func(tx *bolt.Tx) error {
|
||||
bkt := tx.Bucket([]byte(path[0]))
|
||||
if bkt == nil {
|
||||
@ -301,8 +367,17 @@ func (b *DB) DeletePair(path []string, key string) error {
|
||||
|
||||
// DeleteBucket deletes the bucket key at path
|
||||
func (b *DB) DeleteBucket(path []string, key string) error {
|
||||
b.RefreshDB()
|
||||
var err error
|
||||
/*
|
||||
if !b.isOpen {
|
||||
err = b.Open()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer b.Close()
|
||||
}
|
||||
*/
|
||||
b.RefreshDB()
|
||||
err = b.localDB.Update(func(tx *bolt.Tx) error {
|
||||
bkt := tx.Bucket([]byte(path[0]))
|
||||
if bkt == nil {
|
||||
@ -328,6 +403,15 @@ func (b *DB) DeleteBucket(path []string, key string) error {
|
||||
// RefreshDB makes sure that the DB is fresh with the server version
|
||||
func (b *DB) RefreshDB() error {
|
||||
var err error
|
||||
/*
|
||||
if !b.isOpen {
|
||||
err = b.Open()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer b.Close()
|
||||
}
|
||||
*/
|
||||
if b.online {
|
||||
// TODO: Compare latest change here with lates on server
|
||||
// Then sync, if needed
|
||||
|
Loading…
Reference in New Issue
Block a user