// Imported for its side effect only (loading `.env`/`.env.test` via // dotenv) — must run *before* `new PrismaClient()` below. The generated // Prisma Client bakes in its own fallback `.env` path (always // `apps/api/.env`, the dev one — resolved once at `prisma generate` time) // and loads it internally the first time a `PrismaClient` is constructed, // unless `DATABASE_URL` is already set in `process.env` by then — dotenv // never overrides an already-set variable, so whichever of these two env // loads runs first "wins" for the rest of the process. Without this // import, that race depended entirely on which test file some *other* // module happened to import first, which normally worked out only by // coincidence (whatever file mocha's `test/**/*.test.ts` glob happens to // resolve first) — running a single test file in isolation (e.g. `mocha // test/some-file.test.ts` directly, bypassing that glob) could silently // resolve `DATABASE_URL` to the real dev database instead of // `.env.test`'s. `resetDatabase()`'s own `assertRunningAgainstTestDatabase` // guard (test-support/reset-db.ts) is what actually caught this in // practice — it throws rather than truncating the wrong database — but // the fix belongs here, at the source, not just at that one call site. import "../config/env.js"; import { PrismaClient } from "@prisma/client"; /** * Single shared Prisma client instance for the whole process. Prisma * manages its own connection pool internally — instantiating a new * `PrismaClient` per request would exhaust database connections instead of * reusing them. */ export const prisma = new PrismaClient();