File
Blob: tests/worker/helpers/db.ts
| 1 | import { env } from "cloudflare:workers"; |
| 2 | import { sql } from "drizzle-orm"; |
| 3 | import { createDb, type Db } from "@/worker/db/d1/client"; |
| 4 | |
| 5 | type D1Binding = typeof env.DB; |
| 6 | |
| 7 | export function getDb(session: string | null = "first-primary"): Db { |
| 8 | const d1: D1Binding | ReturnType<D1Binding["withSession"]> = session ? env.DB.withSession(session) : env.DB; |
| 9 | return createDb(d1); |
| 10 | } |
| 11 | |
| 12 | export async function resetD1Tables(): Promise<void> { |
| 13 | const db = getDb(); |
| 14 | await db.run(sql`DELETE FROM uploads`); |
| 15 | await db.run(sql`DELETE FROM page_shares`); |
| 16 | await db.run(sql`DELETE FROM published_pages`); |
| 17 | await db.run(sql`DELETE FROM workspace_sites`); |
| 18 | await db.run(sql`UPDATE pages SET parent_id = NULL`); |
| 19 | await db.run(sql`DELETE FROM pages`); |
| 20 | await db.run(sql`DELETE FROM invites`); |
| 21 | await db.run(sql`DELETE FROM memberships`); |
| 22 | await db.run(sql`DELETE FROM workspaces`); |
| 23 | await db.run(sql`DELETE FROM tessera_identities`); |
| 24 | await db.run(sql`DELETE FROM users`); |
| 25 | } |