42 lines
908 B
Go
42 lines
908 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
"solopm.com/solopm-server/internal/config"
|
|
"solopm.com/solopm-server/internal/db"
|
|
)
|
|
|
|
// runMigrations applies pending migrations at startup. Called by serve()
|
|
// unless a future --no-migrate flag disables it.
|
|
func runMigrations(databaseURL string) error {
|
|
return db.MigrateUp(databaseURL)
|
|
}
|
|
|
|
// runMigrateCmd implements `solopm migrate up|down`.
|
|
func runMigrateCmd(args []string) {
|
|
if len(args) != 1 || (args[0] != "up" && args[0] != "down") {
|
|
fmt.Fprintln(os.Stderr, "usage: solopm migrate up|down")
|
|
os.Exit(1)
|
|
}
|
|
|
|
cfg, err := config.Load()
|
|
if err != nil {
|
|
fmt.Fprintln(os.Stderr, "error:", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
switch args[0] {
|
|
case "up":
|
|
err = db.MigrateUp(cfg.DatabaseURL)
|
|
case "down":
|
|
err = db.MigrateDown(cfg.DatabaseURL)
|
|
}
|
|
if err != nil {
|
|
fmt.Fprintln(os.Stderr, "error:", err)
|
|
os.Exit(1)
|
|
}
|
|
fmt.Println("migrate " + args[0] + ": ok")
|
|
}
|