46 lines
1.2 KiB
TypeScript
46 lines
1.2 KiB
TypeScript
import "dotenv/config"
|
|
import { db } from "@/shared/db"
|
|
import { sql } from "drizzle-orm"
|
|
|
|
async function reset() {
|
|
console.log("🔥 Resetting database...")
|
|
|
|
// Disable foreign key checks
|
|
await db.execute(sql`SET FOREIGN_KEY_CHECKS = 0;`)
|
|
|
|
// Get all table names
|
|
const tables = await db.execute(sql`
|
|
SELECT table_name
|
|
FROM information_schema.tables
|
|
WHERE table_schema = DATABASE();
|
|
`)
|
|
|
|
// Drop each table
|
|
const rows = (tables as unknown as [unknown])[0]
|
|
if (!Array.isArray(rows)) return
|
|
|
|
for (const row of rows) {
|
|
const record = row as Record<string, unknown>
|
|
const tableName =
|
|
typeof record.TABLE_NAME === "string"
|
|
? record.TABLE_NAME
|
|
: typeof record.table_name === "string"
|
|
? record.table_name
|
|
: null
|
|
if (!tableName) continue
|
|
console.log(`Dropping table: ${tableName}`)
|
|
await db.execute(sql.raw(`DROP TABLE IF EXISTS \`${tableName}\`;`))
|
|
}
|
|
|
|
// Re-enable foreign key checks
|
|
await db.execute(sql`SET FOREIGN_KEY_CHECKS = 1;`)
|
|
|
|
console.log("✅ Database reset complete.")
|
|
process.exit(0)
|
|
}
|
|
|
|
reset().catch((err) => {
|
|
console.error("❌ Reset failed:", err)
|
|
process.exit(1)
|
|
})
|