Checkpoint: Correctif de production : le serveur exécute désormais les migrations Drizzle versionnées avant l'ouverture HTTP, ce qui initialise une base vide lors du premier déploiement. Test de régression ajouté. Validation complète réussie : 61 tests, TypeScript et build.
All checks were successful
Validation applicative / TypeScript, tests et build (push) Successful in 4m45s
All checks were successful
Validation applicative / TypeScript, tests et build (push) Successful in 4m45s
This commit is contained in:
24
server/databaseMigrations.ts
Normal file
24
server/databaseMigrations.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
import { migrate } from "drizzle-orm/mysql2/migrator";
|
||||
import { drizzle } from "drizzle-orm/mysql2";
|
||||
import { createPool } from "mysql2/promise";
|
||||
|
||||
/**
|
||||
* Synchronise la base avec les migrations versionnées avant d'exposer l'API.
|
||||
* Une base sans DATABASE_URL reste utilisable en développement statique, mais
|
||||
* un déploiement connecté échoue explicitement si la migration ne peut aboutir.
|
||||
*/
|
||||
export async function runDatabaseMigrations() {
|
||||
const databaseUrl = process.env.DATABASE_URL;
|
||||
if (!databaseUrl) {
|
||||
console.warn("[Database] DATABASE_URL absent : migrations ignorées.");
|
||||
return;
|
||||
}
|
||||
|
||||
const pool = createPool(databaseUrl);
|
||||
try {
|
||||
await migrate(drizzle(pool), { migrationsFolder: "./drizzle" });
|
||||
console.log("[Database] Migrations Drizzle synchronisées.");
|
||||
} finally {
|
||||
await pool.end();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user