feat: enhance health check endpoint with database status check

This commit is contained in:
2026-08-12 05:26:00 +03:30
parent f04c797be6
commit 07edb98a05
2 changed files with 39 additions and 7 deletions
+19 -3
View File
@@ -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
View File
@@ -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
}
}); });
}); });