新增项目数据库自检流程

This commit is contained in:
CN-JS-HuiBai
2026-04-10 23:44:46 +08:00
parent 7362bcf206
commit 3519003a77
2 changed files with 18 additions and 3 deletions

View File

@@ -235,15 +235,21 @@ async function ensureTable(tableName, tableSchema) {
} }
async function checkAndFixDatabase() { async function checkAndFixDatabase() {
const envPath = path.join(__dirname, '..', '.env'); // Check for DB host to see if we have configuration (could be in .env or environment)
if (!fs.existsSync(envPath)) return; if (!process.env.MYSQL_HOST && !fs.existsSync(path.join(__dirname, '..', '.env'))) {
console.log('[Database Integrity] No configuration found, skipping check.');
return false;
}
try { try {
for (const [tableName, tableSchema] of Object.entries(SCHEMA)) { for (const [tableName, tableSchema] of Object.entries(SCHEMA)) {
await ensureTable(tableName, tableSchema); await ensureTable(tableName, tableSchema);
} }
return true;
} catch (err) { } catch (err) {
console.error('[Database Integrity] Startup schema check failed:', err.message); console.error('[Database Integrity] Startup schema check failed:', err.message);
// Rethrow to allow caller to decide if this is fatal
throw err;
} }
} }

View File

@@ -1418,7 +1418,16 @@ async function start() {
try { try {
console.log('🔧 Initializing services...'); console.log('🔧 Initializing services...');
// Ensure DB is ready before starting anything else // 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 // Start services
latencyService.start(); latencyService.start();