49 lines
802 B
Go
49 lines
802 B
Go
package migrations
|
|
|
|
import (
|
|
"context"
|
|
"embed"
|
|
"fmt"
|
|
"log"
|
|
|
|
"github.com/dhax/go-base/database"
|
|
"github.com/uptrace/bun/migrate"
|
|
)
|
|
|
|
//go:embed *.sql
|
|
var sqlMigrations embed.FS
|
|
|
|
var Migrations = migrate.NewMigrations()
|
|
|
|
func init() {
|
|
if err := Migrations.Discover(sqlMigrations); err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
// Migrate runs all migrations
|
|
func Migrate() {
|
|
db, err := database.DBConn()
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer db.Close()
|
|
|
|
migrator := migrate.NewMigrator(db, Migrations)
|
|
|
|
err = migrator.Init(context.Background())
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
group, err := migrator.Migrate(context.Background())
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
if group.ID == 0 {
|
|
fmt.Printf("there are no new migrations to run\n")
|
|
} else {
|
|
fmt.Printf("migrated to %s\n", group)
|
|
}
|
|
}
|