import { parseArgs } from "@lib/char"; import { type ReservedSQL, sql } from "bun"; (async (): Promise<void> => { try { const args: Record<string, string | boolean> = parseArgs(); const table: string | undefined = args.table as string | undefined; const cascade: boolean = args.cascade === true; if (!table) { throw new Error("Missing required argument: --table <table_name>"); } const reservation: ReservedSQL = await sql.reserve(); try { await reservation`TRUNCATE TABLE ${sql(table)} ${cascade ? sql`CASCADE` : sql``};`; console.log( `Table ${table} has been cleared${cascade ? " with CASCADE" : ""}.`, ); } catch (error) { if ( error instanceof Error && error.message.includes("foreign key constraint") ) { console.error( `Could not clear table "${table}" due to foreign key constraints.\nTry using --cascade if you want to remove dependent records.`, ); } else { console.error("Could not clear table:", error); } } finally { reservation.release(); } } catch (error) { console.error("Unexpected error:", error); process.exit(1); } })();