package main import ( "context" "flag" "log" "os" "path/filepath" "github.com/panelhosting/panel/internal/config" "github.com/panelhosting/panel/internal/database" ) func main() { down := flag.Bool("down", false, "rollback all migrations") flag.Parse() cfg, err := config.Load() if err != nil { log.Fatal(err) } migrationsPath, err := resolveMigrationsPath() if err != nil { log.Fatal(err) } if *down { if err := database.RollbackMigrations(cfg.DatabaseURL, migrationsPath); err != nil { log.Fatal(err) } log.Println("migrations rolled back") return } if err := database.RunMigrations(cfg.DatabaseURL, migrationsPath); err != nil { log.Fatal(err) } log.Println("migrations applied") ctx := context.Background() pool, err := database.NewPool(ctx, cfg.DatabaseURL) if err != nil { log.Fatal(err) } defer pool.Close() log.Println("database connection ok") } func resolveMigrationsPath() (string, error) { if p := os.Getenv("MIGRATIONS_PATH"); p != "" { return p, nil } wd, err := os.Getwd() if err != nil { return "", err } return filepath.Join(wd, "migrations"), nil }