// reset-db.ts // Development command to wipe the database and apply all migrations from scratch import { migrate, pool, connectionConfig } from "../database"; async function main(): Promise { const args = process.argv.slice(2); // Require explicit confirmation unless --force is passed if (!args.includes("--force")) { console.error("This will DROP ALL TABLES in the database!"); console.error(` Database: ${connectionConfig.database}`); console.error(` Host: ${connectionConfig.host}:${connectionConfig.port}`); console.error(""); console.error("Run with --force to proceed."); process.exit(1); } try { console.log("Dropping all tables..."); // Get all table names in the public schema const result = await pool.query<{ tablename: string }>(` SELECT tablename FROM pg_tables WHERE schemaname = 'public' `); if (result.rows.length > 0) { // Drop all tables with CASCADE to handle foreign key constraints const tableNames = result.rows.map((r) => `"${r.tablename}"`).join(", "); await pool.query(`DROP TABLE IF EXISTS ${tableNames} CASCADE`); console.log(`Dropped ${result.rows.length} table(s)`); } else { console.log("No tables to drop"); } console.log(""); await migrate(); console.log(""); console.log("Database reset complete."); } finally { await pool.end(); } } main().catch((err) => { console.error("Failed to reset database:", err.message); process.exit(1); });