Files
sprint/packages/backend/scripts/db-reset.ts
2026-01-08 17:53:56 +00:00

49 lines
1.4 KiB
TypeScript

import "dotenv/config";
import { execSync } from "node:child_process";
import { sql } from "drizzle-orm";
import { drizzle } from "drizzle-orm/node-postgres";
const DATABASE_URL = process.env.DATABASE_URL;
if (!DATABASE_URL) {
console.error("DATABASE_URL is not set");
process.exit(1);
}
const db = drizzle({
connection: {
connectionString: DATABASE_URL,
},
});
async function resetDatabase() {
console.log("resetting database...");
try {
// drop all tables in the correct order (respecting foreign key constraints)
await db.execute(sql`DROP TABLE IF EXISTS "Issue" CASCADE`);
await db.execute(sql`DROP TABLE IF EXISTS "Project" CASCADE`);
await db.execute(sql`DROP TABLE IF EXISTS "OrganisationMember" CASCADE`);
await db.execute(sql`DROP TABLE IF EXISTS "Organisation" CASCADE`);
await db.execute(sql`DROP TABLE IF EXISTS "User" CASCADE`);
console.log("all tables dropped");
// push the schema to recreate tables
console.log("recreating schema...");
execSync("npx drizzle-kit push --force", {
stdio: "inherit",
cwd: `${import.meta.dir}/..`,
});
console.log("database reset complete");
} catch (error) {
console.error("failed to reset database:", error);
process.exit(1);
}
process.exit(0);
}
resetDatabase();