62 lines
1.2 KiB
Go
62 lines
1.2 KiB
Go
package migrate
|
|
|
|
import (
|
|
"log"
|
|
|
|
"github.com/dhax/go-base/database"
|
|
"github.com/go-pg/migrations"
|
|
"github.com/go-pg/pg"
|
|
)
|
|
|
|
// Migrate runs go-pg migrations
|
|
func Migrate(args []string) {
|
|
db, err := database.DBConn()
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
err = db.RunInTransaction(func(tx *pg.Tx) error {
|
|
oldVersion, newVersion, err := migrations.Run(tx, args...)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if newVersion != oldVersion {
|
|
log.Printf("migrated from version %d to %d\n", oldVersion, newVersion)
|
|
} else {
|
|
log.Printf("version is %d\n", oldVersion)
|
|
}
|
|
return nil
|
|
})
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
}
|
|
|
|
// Reset runs reverts all migrations to version 0 and then applies all migrations to latest
|
|
func Reset() {
|
|
db, err := database.DBConn()
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
version, err := migrations.Version(db)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
err = db.RunInTransaction(func(tx *pg.Tx) error {
|
|
for version != 0 {
|
|
oldVersion, newVersion, err := migrations.Run(tx, "down")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
log.Printf("migrated from version %d to %d\n", oldVersion, newVersion)
|
|
version = newVersion
|
|
}
|
|
return nil
|
|
})
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|