Files
nostrlib/eventstore/boltdb/migration.go
2025-08-05 13:02:07 -03:00

48 lines
891 B
Go

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[:])
}