feat: refactor migration handling to ensure server waits for database migrations before starting
This commit is contained in:
@@ -9,7 +9,7 @@ const client = createClient({ url });
|
||||
|
||||
export const db = drizzle(client);
|
||||
|
||||
// Auto-run migrations on import (self-healing database)
|
||||
// Auto-run migrations (self-healing database)
|
||||
async function runMigrations() {
|
||||
const migrations = [
|
||||
{ name: "image_url", sql: "ALTER TABLE medications ADD COLUMN image_url TEXT" },
|
||||
@@ -28,5 +28,5 @@ async function runMigrations() {
|
||||
}
|
||||
}
|
||||
|
||||
// Run migrations immediately
|
||||
runMigrations().catch(console.error);
|
||||
// Export promise so server can await it before starting
|
||||
export const migrationsReady = runMigrations();
|
||||
|
||||
@@ -10,6 +10,7 @@ import fastifyStatic from "@fastify/static";
|
||||
import { resolve } from "path";
|
||||
import { existsSync, mkdirSync } from "fs";
|
||||
import { env } from "./plugins/env.js";
|
||||
import { migrationsReady } from "./db/client.js";
|
||||
import { healthRoutes } from "./routes/health.js";
|
||||
import { authRoutes } from "./routes/auth.js";
|
||||
import { medicationRoutes } from "./routes/medications.js";
|
||||
@@ -17,6 +18,10 @@ import { settingsRoutes } from "./routes/settings.js";
|
||||
import { plannerRoutes } from "./routes/planner.js";
|
||||
import { startReminderScheduler } from "./services/reminder-scheduler.js";
|
||||
|
||||
// Wait for database migrations before anything else
|
||||
await migrationsReady;
|
||||
console.log("[DB] Migrations complete, starting server...");
|
||||
|
||||
// Ensure images directory exists
|
||||
const imagesDir = resolve(process.cwd(), "data/images");
|
||||
if (!existsSync(imagesDir)) {
|
||||
|
||||
Reference in New Issue
Block a user