41 lines
1.1 KiB
Go
41 lines
1.1 KiB
Go
// Runs migrations.Migrate() against a throwaway Postgres, so the DDL is
|
|
// executed at least once before it runs on a real database at server startup.
|
|
//
|
|
// The test suite never calls Migrate — the integration tests AutoMigrate the
|
|
// models they need — so every raw statement at the end of migrations/migrate.go
|
|
// (CREATE EXTENSION, the views, the CONCURRENTLY index, the seed) was
|
|
// unexecuted until this existed.
|
|
//
|
|
// Usage: MIGRATE_CHECK_DSN="host=... " go run ./cmd/migratecheck
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
"doormile/db"
|
|
"doormile/migrations"
|
|
|
|
"gorm.io/driver/postgres"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func main() {
|
|
dsn := os.Getenv("MIGRATE_CHECK_DSN")
|
|
if dsn == "" {
|
|
fmt.Println("MIGRATE_CHECK_DSN is required (a THROWAWAY database)")
|
|
os.Exit(2)
|
|
}
|
|
gdb, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
|
|
if err != nil {
|
|
fmt.Println("connect:", err)
|
|
os.Exit(1)
|
|
}
|
|
db.DB = gdb // the registry seed reads the package handle
|
|
if err := migrations.Migrate(gdb); err != nil {
|
|
fmt.Println("MIGRATE FAILED:", err)
|
|
os.Exit(1)
|
|
}
|
|
fmt.Println("MIGRATE RETURNED OK")
|
|
}
|