fix(prisma): provider statique + scripts de bascule SQLite/PostgreSQL

Prisma ne supporte pas env() pour le champ `provider` d'un datasource
(uniquement pour `url`). Le schéma utilise maintenant `provider = "sqlite"`
en statique, et deux scripts npm (`db:use-sqlite` / `db:use-postgres`)
réécrivent le fichier pour basculer entre les deux moteurs.

Sans ce fix, `prisma generate` échoue au boot.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Mathieu BOURBON
2026-04-18 16:38:03 +02:00
parent fbb6138c28
commit 73d016ec24
3 changed files with 44 additions and 5 deletions

View File

@@ -0,0 +1,36 @@
#!/usr/bin/env node
/**
* Bascule le provider Prisma entre SQLite et PostgreSQL.
* Prisma n'accepte pas env() pour `provider`, donc on réécrit le fichier.
*
* Usage : node scripts/switch-db-provider.mjs sqlite
* node scripts/switch-db-provider.mjs postgresql
*/
import { readFileSync, writeFileSync } from 'node:fs';
import { fileURLToPath } from 'node:url';
import { dirname, resolve } from 'node:path';
const __dirname = dirname(fileURLToPath(import.meta.url));
const schemaPath = resolve(__dirname, '..', 'prisma', 'schema.prisma');
const target = process.argv[2];
if (!['sqlite', 'postgresql'].includes(target)) {
console.error('Usage : node scripts/switch-db-provider.mjs <sqlite|postgresql>');
process.exit(1);
}
const content = readFileSync(schemaPath, 'utf8');
const next = content.replace(
/provider\s*=\s*"(sqlite|postgresql)"/,
`provider = "${target}"`,
);
if (next === content) {
console.log(`Provider déjà réglé sur "${target}", rien à faire.`);
process.exit(0);
}
writeFileSync(schemaPath, next);
console.log(`✅ Provider Prisma basculé sur "${target}"`);
console.log(' Pense à adapter DATABASE_URL dans .env puis :');
console.log(' npm run db:generate && npm run db:migrate');