feat: enhance health check endpoint with database status check
This commit is contained in:
@@ -5,6 +5,7 @@ const express = require('express');
|
|||||||
const cors = require('cors');
|
const cors = require('cors');
|
||||||
const helmet = require('helmet');
|
const helmet = require('helmet');
|
||||||
const rateLimit = require('express-rate-limit');
|
const rateLimit = require('express-rate-limit');
|
||||||
|
const mongoose = require('mongoose');
|
||||||
|
|
||||||
const config = require('./config/config');
|
const config = require('./config/config');
|
||||||
const connectDB = require('./config/db');
|
const connectDB = require('./config/db');
|
||||||
@@ -53,10 +54,25 @@ app.use('/api', limiter);
|
|||||||
|
|
||||||
// ── Routes ────────────────────────────────────────────────────────────────────
|
// ── Routes ────────────────────────────────────────────────────────────────────
|
||||||
app.get('/api/health', (req, res) => {
|
app.get('/api/health', (req, res) => {
|
||||||
res.json({
|
const dbStates = {
|
||||||
status: 'ok',
|
0: 'disconnected',
|
||||||
message: 'Gameno API is running',
|
1: 'connected',
|
||||||
|
2: 'connecting',
|
||||||
|
3: 'disconnecting',
|
||||||
|
99: 'uninitialized'
|
||||||
|
};
|
||||||
|
|
||||||
|
const dbStateCode = mongoose.connection.readyState;
|
||||||
|
const dbStatus = dbStates[dbStateCode] || 'unknown';
|
||||||
|
const isHealthy = dbStateCode === 1;
|
||||||
|
|
||||||
|
res.status(isHealthy ? 200 : 503).json({
|
||||||
|
status: isHealthy ? 'healthy' : 'unhealthy',
|
||||||
timestamp: new Date().toISOString(),
|
timestamp: new Date().toISOString(),
|
||||||
|
uptime: process.uptime(),
|
||||||
|
services: {
|
||||||
|
database: dbStatus
|
||||||
|
},
|
||||||
environment: config.NODE_ENV
|
environment: config.NODE_ENV
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
+20
-4
@@ -1,6 +1,7 @@
|
|||||||
import express from 'express';
|
import express from 'express';
|
||||||
import cors from 'cors';
|
import cors from 'cors';
|
||||||
import dotenv from 'dotenv';
|
import dotenv from 'dotenv';
|
||||||
|
import mongoose from 'mongoose';
|
||||||
|
|
||||||
dotenv.config();
|
dotenv.config();
|
||||||
|
|
||||||
@@ -11,10 +12,25 @@ app.use(cors());
|
|||||||
app.use(express.json());
|
app.use(express.json());
|
||||||
|
|
||||||
app.get('/api/health', (req, res) => {
|
app.get('/api/health', (req, res) => {
|
||||||
res.json({
|
const dbStates = {
|
||||||
status: 'ok',
|
0: 'disconnected',
|
||||||
message: 'Gameno API is running',
|
1: 'connected',
|
||||||
timestamp: new Date().toISOString()
|
2: 'connecting',
|
||||||
|
3: 'disconnecting',
|
||||||
|
99: 'uninitialized'
|
||||||
|
};
|
||||||
|
|
||||||
|
const dbStateCode = mongoose.connection.readyState;
|
||||||
|
const dbStatus = dbStates[dbStateCode] || 'unknown';
|
||||||
|
const isHealthy = dbStateCode === 1;
|
||||||
|
|
||||||
|
res.status(isHealthy ? 200 : 503).json({
|
||||||
|
status: isHealthy ? 'healthy' : 'unhealthy',
|
||||||
|
timestamp: new Date().toISOString(),
|
||||||
|
uptime: process.uptime(),
|
||||||
|
services: {
|
||||||
|
database: dbStatus
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user