log migrations as the run

This commit is contained in:
sentriz
2020-05-01 02:03:01 +01:00
parent 07a222d8df
commit 708198bcd5

View File

@@ -10,6 +10,25 @@ import (
"gopkg.in/gormigrate.v1" "gopkg.in/gormigrate.v1"
) )
func addMigrationLog(migrs ...gormigrate.Migration) []*gormigrate.Migration {
log := func(i int, mig gormigrate.MigrateFunc, name string) gormigrate.MigrateFunc {
return func(tx *gorm.DB) error {
// print that we're on the ith out of n migrations
defer log.Printf("migration (%d/%d) '%s' finished", i+1, len(migrs), name)
return mig(tx)
}
}
ret := make([]*gormigrate.Migration, 0, len(migrs))
for i, mig := range migrs {
ret = append(ret, &gormigrate.Migration{
ID: mig.ID,
Rollback: mig.Rollback,
Migrate: log(i, mig.Migrate, mig.ID),
})
}
return ret
}
var ( var (
dbMaxOpenConns = 1 dbMaxOpenConns = 1
dbOptions = url.Values{ dbOptions = url.Values{
@@ -37,14 +56,15 @@ func New(path string) (*DB, error) {
} }
db.SetLogger(log.New(os.Stdout, "gorm ", 0)) db.SetLogger(log.New(os.Stdout, "gorm ", 0))
db.DB().SetMaxOpenConns(dbMaxOpenConns) db.DB().SetMaxOpenConns(dbMaxOpenConns)
migr := gormigrate.New(db, gormigrate.DefaultOptions, []*gormigrate.Migration{ migr := gormigrate.New(db, gormigrate.DefaultOptions, addMigrationLog(
&migrationInitSchema, migrationInitSchema,
&migrationCreateInitUser, migrationCreateInitUser,
&migrationMergePlaylist, migrationMergePlaylist,
&migrationCreateTranscode, migrationCreateTranscode,
&migrationAddGenre, migrationAddGenre,
&migrationUpdateTranscodePrefIDX, migrationUpdateTranscodePrefIDX,
}) migrationAddAlbumIDX,
))
if err = migr.Migrate(); err != nil { if err = migr.Migrate(); err != nil {
return nil, errors.Wrap(err, "migrating to latest version") return nil, errors.Wrap(err, "migrating to latest version")
} }