import { readFileSync, readdirSync } from "fs"; import { join } from "path"; import { Pool } from "pg"; import { config } from "dotenv"; config(); const pool = new Pool({ host: process.env.POSTGRES_HOST || "localhost", port: parseInt(process.env.POSTGRES_PORT || "5432"), database: process.env.POSTGRES_DB || "transceiver_db", user: process.env.POSTGRES_USER || "tip", password: process.env.POSTGRES_PASSWORD || "tip_dev_2026", }); async function migrate(): Promise { const sqlDir = join(__dirname, "..", "sql"); const files = readdirSync(sqlDir) .filter((f) => f.endsWith(".sql")) .sort(); console.log(`Found ${files.length} migration files`); const client = await pool.connect(); try { for (const file of files) { const sql = readFileSync(join(sqlDir, file), "utf-8"); console.log(`Running: ${file}...`); await client.query(sql); console.log(` Done: ${file}`); } console.log("\nAll migrations completed successfully."); } catch (err) { console.error("Migration failed:", err); process.exit(1); } finally { client.release(); await pool.end(); } } migrate();