vitest-global-setup.ts 899 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { sql } from "drizzle-orm"
  2. import { testDb, disconnect } from "./src/db/db.js"
  3. async function resetTestDatabase() {
  4. const db = testDb
  5. if (!db) {
  6. console.log("No database connection available, skipping database reset")
  7. return
  8. }
  9. try {
  10. const tables = await db.execute<{ table_name: string }>(sql`
  11. SELECT table_name
  12. FROM information_schema.tables
  13. WHERE table_schema = 'public'
  14. AND table_type = 'BASE TABLE';
  15. `)
  16. const tableNames = tables.map((t) => t.table_name)
  17. for (const tableName of tableNames) {
  18. await db.execute(sql`TRUNCATE TABLE "${sql.raw(tableName)}" CASCADE;`)
  19. }
  20. console.log(`[${process.env.DATABASE_URL}] TRUNCATE ${tableNames.join(", ")}`)
  21. } catch (error) {
  22. console.error("Error resetting database:", error)
  23. throw error
  24. }
  25. }
  26. export default async function () {
  27. await resetTestDatabase()
  28. return async () => {
  29. await disconnect()
  30. }
  31. }