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>
37 lines
1.2 KiB
JavaScript
37 lines
1.2 KiB
JavaScript
#!/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');
|