test / src /controllers /health.controller.ts
bipulsardar's picture
23
1d7d958
Raw History Blame Contribute Delete
1.23 kB
import { Request, Response } from 'express';
import { IDatasetService } from '../services/interfaces/IDatasetService';
export class HealthController {
private datasetService: IDatasetService;
constructor(datasetService: IDatasetService) {
this.datasetService = datasetService;
}
public getHealth = async (req: Request, res: Response): Promise<void> => {
try {
const stats = await this.datasetService.getDatasetStats();
const memoryUsage = process.memoryUsage();
res.status(200).json({
status: 'healthy',
timestamp: new Date().toISOString(),
nodeVersion: process.version,
uptimeSeconds: Math.floor(process.uptime()),
memory: {
rssMb: Math.round(memoryUsage.rss / (1024 * 1024)),
heapTotalMb: Math.round(memoryUsage.heapTotal / (1024 * 1024)),
heapUsedMb: Math.round(memoryUsage.heapUsed / (1024 * 1024)),
},
storage: {
csvAvailable: stats.csvExists,
idxAvailable: stats.idxExists,
totalIndexedRows: stats.totalIndexedRows,
},
});
} catch (err: any) {
res.status(500).json({
status: 'unhealthy',
error: err.message,
});
}
};
}