diff --git a/server/db-schema-check.js b/server/db-schema-check.js index 0b76471..1c00d3b 100644 --- a/server/db-schema-check.js +++ b/server/db-schema-check.js @@ -235,15 +235,21 @@ async function ensureTable(tableName, tableSchema) { } async function checkAndFixDatabase() { - const envPath = path.join(__dirname, '..', '.env'); - if (!fs.existsSync(envPath)) return; + // Check for DB host to see if we have configuration (could be in .env or environment) + if (!process.env.MYSQL_HOST && !fs.existsSync(path.join(__dirname, '..', '.env'))) { + console.log('[Database Integrity] No configuration found, skipping check.'); + return false; + } try { for (const [tableName, tableSchema] of Object.entries(SCHEMA)) { await ensureTable(tableName, tableSchema); } + return true; } catch (err) { console.error('[Database Integrity] Startup schema check failed:', err.message); + // Rethrow to allow caller to decide if this is fatal + throw err; } } diff --git a/server/index.js b/server/index.js index 6279052..dcbdc6a 100644 --- a/server/index.js +++ b/server/index.js @@ -1418,7 +1418,16 @@ async function start() { try { console.log('🔧 Initializing services...'); // Ensure DB is ready before starting anything else - await checkAndFixDatabase(); + try { + const dbFixed = await checkAndFixDatabase(); + if (dbFixed) { + // Re-run the local checkDb() to update isDbInitialized and other status variables + await checkDb(); + } + } catch (dbErr) { + console.warn('⚠️ Database initialization check encountered an error:', dbErr.message); + // We don't necessarily crash here, but users will see the setup screen if isDbInitialized is false + } // Start services latencyService.start();