Files
IPAM/scripts/switch-db-provider.mjs
Mathieu BOURBON 73d016ec24 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>
2026-04-18 16:38:03 +02:00

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');