chore(deps): upgrade Prisma 6.19 -> 7.8.0 (Rust-free client + mariadb adapter)
prisma / @prisma/client 6.19.2 -> 7.8.0; added @prisma/adapter-mariadb 7.8.0 and mariadb 3.5.2 (the runtime driver). Prisma 7 breaking changes handled (verified via Prisma's own tooling — the official upgrade-guide summary had hallucinated package names, so I confirmed everything against `prisma validate`/`generate` and the installed type defs): - The Rust query engine is removed; the runtime connection is now made through a driver adapter. src/config/database.ts wires PrismaMariaDb, parsing DATABASE_URL into an explicit mariadb pool config so the literal `@` in our password (which a naive connection-string parser mishandles) is correct. - datasource `url` is no longer allowed in schema.prisma -> moved to a new prisma.config.ts (schema + datasource.url + migrations.seed). Prisma 7 no longer auto-loads .env, so the config does `import "dotenv/config"`. - The deprecated package.json#prisma seed config was removed (now in the config). - seed.ts and the two maintenance scripts now use the shared adapter-wired client. The legacy `prisma-client-js` generator STILL works under v7 (generates to @prisma/client as before), so NO import-path changes were needed across the 16 @prisma/client import sites — switching to the new prisma-client/output generator is not required for us. No prisma.$use() middleware exists. Node 24 / TS 5.9 exceed the v7 minimums (20.19 / 5.4). No migrations were run (your DBs are untouched); removing datasource.url is a config change, not DDL, so this phase needs no new migration. Gates: tsc 0 | build 0 | vitest 247/247 against app_test (proves the mariadb adapter works at runtime, incl. raw SELECT...FOR UPDATE locking and Decimal/VAT) | eslint 0 errors. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,27 @@
|
||||
import { PrismaClient } from "@prisma/client";
|
||||
import { PrismaMariaDb } from "@prisma/adapter-mariadb";
|
||||
|
||||
// Prisma 7 removed the Rust query engine; the runtime DB connection is now made
|
||||
// through a driver adapter. PrismaMariaDb wraps the `mariadb` driver (which is
|
||||
// MySQL-wire compatible). We parse DATABASE_URL ourselves and pass an explicit
|
||||
// pool config rather than the raw connection string, so a literal `@` in the
|
||||
// password (which a naive connection-string parser would mishandle) is handled
|
||||
// correctly.
|
||||
function mariadbAdapterFromUrl(rawUrl: string): PrismaMariaDb {
|
||||
const u = new URL(rawUrl);
|
||||
return new PrismaMariaDb({
|
||||
host: u.hostname,
|
||||
port: u.port ? Number(u.port) : 3306,
|
||||
user: decodeURIComponent(u.username),
|
||||
password: decodeURIComponent(u.password),
|
||||
database: u.pathname.replace(/^\//, ""),
|
||||
});
|
||||
}
|
||||
|
||||
const adapter = mariadbAdapterFromUrl(process.env.DATABASE_URL as string);
|
||||
|
||||
const prisma = new PrismaClient({
|
||||
adapter,
|
||||
log: process.env.APP_ENV === "local" ? ["warn", "error"] : ["error"],
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user