Go-Back-Skeleton/database/migrate/main.go
2017-10-22 21:56:36 +02:00

63 lines
1.2 KiB
Go

// Package migrate implements postgres migrations.
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)
}
}