eventstore: boltdb (copied from lmdb)
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
package bolt
|
||||
|
||||
import (
|
||||
"encoding/binary"
|
||||
"log"
|
||||
|
||||
"go.etcd.io/bbolt"
|
||||
)
|
||||
|
||||
const (
|
||||
DB_VERSION byte = 'v'
|
||||
)
|
||||
|
||||
const target = 1
|
||||
|
||||
func (b *BoltBackend) migrate() error {
|
||||
return b.DB.Update(func(txn *bbolt.Tx) error {
|
||||
bucket := txn.Bucket(settingsStore)
|
||||
|
||||
val := bucket.Get([]byte("version"))
|
||||
|
||||
var version uint16 = target
|
||||
if val == nil {
|
||||
version = binary.BigEndian.Uint16(val)
|
||||
}
|
||||
|
||||
// do the migrations in increasing steps (there is no rollback)
|
||||
if version < target {
|
||||
log.Printf("[bolt] migration %d: reindex everything\n", target)
|
||||
|
||||
// bump version
|
||||
if err := b.setVersion(txn, target); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
func (b *BoltBackend) setVersion(txn *bbolt.Tx, v uint16) error {
|
||||
bucket := txn.Bucket(settingsStore)
|
||||
|
||||
var newVersion [2]byte
|
||||
binary.BigEndian.PutUint16(newVersion[:], v)
|
||||
return bucket.Put([]byte("version"), newVersion[:])
|
||||
}
|
||||
Reference in New Issue
Block a user