better migrator and page timing

This commit is contained in:
ston1th 2019-08-24 18:33:13 +02:00
commit 9ecaf33d86
4 changed files with 19 additions and 12 deletions

View file

@ -11,14 +11,13 @@ const (
currentVersion = 1
)
type migrator func(*DB) (int, error)
type migrator func(*DB, int) error
var migrators = []migrator{
func(db *DB) (int, error) {
return 0, nil
func(_ *DB, _ int) error {
return nil
},
func(db *DB) (version int, err error) {
version = 1
func(db *DB, version int) (err error) {
// recreate all pages with new format
var pages []string
db.store.ForEachPrefix(pagePrefix, func(k string, _ []byte) error {
@ -72,15 +71,17 @@ func (db *DB) RunMigrations() (err error) {
log.Printf("db: database version %d", version)
for version < currentVersion {
v := version + 1
log.Printf("db: running migration %d", v)
version, err = migrators[v](db)
log.Printf("db: running migration verison %d", v)
err = migrators[v](db, v)
if err != nil {
return
}
err = db.store.Set(versionKey, version)
err = db.store.Set(versionKey, v)
if err != nil {
return
}
version = v
log.Printf("db: database version %d", version)
}
return
}