Fix: Restore website functionality - all pages and APIs working
This commit is contained in:
77
backend/scripts/db-health.js
Executable file
77
backend/scripts/db-health.js
Executable file
@@ -0,0 +1,77 @@
|
||||
#!/usr/bin/env node
|
||||
/**
|
||||
* Database Health Check Script
|
||||
* Tests database connectivity and performance
|
||||
* Usage: node scripts/db-health.js
|
||||
*/
|
||||
|
||||
const db = require("../config/database");
|
||||
const logger = require("../config/logger");
|
||||
|
||||
async function runHealthCheck() {
|
||||
console.log("🔍 Running database health check...\n");
|
||||
|
||||
try {
|
||||
// Run health check with timeout
|
||||
const result = await db.healthCheck(5000);
|
||||
|
||||
if (result.healthy) {
|
||||
console.log("✅ DATABASE HEALTHY");
|
||||
console.log("━━━━━━━━━━━━━━━━━━━━━━");
|
||||
console.log(`Database: ${result.database}`);
|
||||
console.log(`Timestamp: ${result.timestamp}`);
|
||||
console.log(`\nConnection Pool:`);
|
||||
console.log(` Total Connections: ${result.pool.total}`);
|
||||
console.log(` Idle Connections: ${result.pool.idle}`);
|
||||
console.log(` Waiting Requests: ${result.pool.waiting}`);
|
||||
console.log(` Pool Connected: ${result.pool.connected ? "✓" : "✗"}`);
|
||||
console.log(`\nQuery Cache:`);
|
||||
console.log(
|
||||
` Cached Queries: ${result.cache.size}/${result.cache.maxSize}`
|
||||
);
|
||||
console.log(
|
||||
` Usage: ${((result.cache.size / result.cache.maxSize) * 100).toFixed(
|
||||
1
|
||||
)}%`
|
||||
);
|
||||
|
||||
// Get additional pool status
|
||||
const poolStatus = db.getPoolStatus();
|
||||
console.log(`\n📊 Pool Status: OPERATIONAL`);
|
||||
|
||||
process.exitCode = 0;
|
||||
} else {
|
||||
console.log("❌ DATABASE UNHEALTHY");
|
||||
console.log("━━━━━━━━━━━━━━━━━━━━━━");
|
||||
console.log(`Error: ${result.error}`);
|
||||
if (result.pool) {
|
||||
console.log(`\nPool State:`);
|
||||
console.log(
|
||||
` Total: ${result.pool.total}, Idle: ${result.pool.idle}, Waiting: ${result.pool.waiting}`
|
||||
);
|
||||
}
|
||||
process.exitCode = 1;
|
||||
}
|
||||
} catch (error) {
|
||||
console.log("💥 HEALTH CHECK FAILED");
|
||||
console.log("━━━━━━━━━━━━━━━━━━━━━━");
|
||||
console.log(`Error: ${error.message}`);
|
||||
console.log(`\nThis usually indicates:`);
|
||||
console.log(` 1. Database connection timeout`);
|
||||
console.log(` 2. PostgreSQL service not running`);
|
||||
console.log(` 3. Network/firewall issues`);
|
||||
console.log(` 4. Database credentials incorrect`);
|
||||
process.exitCode = 1;
|
||||
} finally {
|
||||
// Gracefully close the pool
|
||||
console.log("\n🔌 Closing database connections...");
|
||||
await db.closePool();
|
||||
console.log("✓ Database pool closed\n");
|
||||
}
|
||||
}
|
||||
|
||||
// Run the check
|
||||
runHealthCheck().catch((err) => {
|
||||
console.error("Fatal error:", err);
|
||||
process.exit(1);
|
||||
});
|
||||
Reference in New Issue
Block a user