package main import ( "fmt" "log" "os" "moku-backend/internal/config" "moku-backend/internal/database" ) func main() { cfg := config.Load() db, err := database.NewPostgres(cfg.PostgresURL) if err != nil { log.Fatalf("connect database for migrations: %v", err) } defer db.Close() command := "up" if len(os.Args) > 1 { command = os.Args[1] } switch command { case "up": if err := db.MigrateUp(); err != nil { log.Fatalf("run migrations: %v", err) } fmt.Println("migrations applied") case "down": if err := db.MigrateDown(); err != nil { log.Fatalf("roll back migration: %v", err) } fmt.Println("latest migration rolled back") case "reset": if err := db.MigrateReset(); err != nil { log.Fatalf("reset migrations: %v", err) } fmt.Println("migrations reset") case "status": if err := db.MigrateStatus(); err != nil { log.Fatalf("show migration status: %v", err) } default: log.Fatalf("unsupported migrate command %q (supported: up, down, reset, status)", command) } }