-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinstrumentation.ts
More file actions
32 lines (31 loc) · 1.27 KB
/
Copy pathinstrumentation.ts
File metadata and controls
32 lines (31 loc) · 1.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/**
* Instrumentation Next.js — Code exécuté AU DÉMARRAGE du serveur.
*
* register() est appelé une seule fois quand Next.js démarre.
* On l'utilise pour appliquer automatiquement les migrations de base de données
* en mode local (Docker / développement).
*
* Pourquoi pas en production cloud (Turso) ?
* → En production, les migrations doivent être appliquées manuellement
* via `npx drizzle-kit migrate` AVANT le déploiement, car Turso est
* un service distant partagé et les migrations automatiques pourraient
* causer des problèmes (timeout, conflits).
*/
export async function register() {
const dbUrl = process.env.DATABASE_URL || "file:./data/nullpost.db"
const isLocalDb = dbUrl.startsWith("file:")
// Conditions pour l'auto-migration :
// 1. Runtime Node.js (pas Edge)
// 2. Base de données locale (fichier SQLite)
if (process.env.NEXT_RUNTIME === "nodejs" && isLocalDb) {
try {
const { runMigrations } = await import("@/lib/db/migrate")
await runMigrations()
console.log("[nullpost] database migrations applied")
} catch (error) {
// Erreur fatale : si les migrations échouent, le serveur ne peut pas démarrer
console.error("[nullpost] FATAL: migration failed:", error)
throw error
}
}
}