/** * Disk Metrics Controller * Handles API requests for disk usage and system metrics */ const DiskMetrics = require('../models/DiskMetrics.model'); const logger = require('../utils/logger.util'); /** * Get all metrics (local + remote) * GET /api/admin/disk-metrics */ async function getAllMetrics(req, res) { try { logger.info('Fetching disk metrics for all systems'); const metrics = await DiskMetrics.getAllMetrics(); // Add health status for each system if (metrics.local && metrics.local.usedPercent !== undefined) { metrics.local.health = DiskMetrics.getHealthStatus(metrics.local.usedPercent); } if (metrics.remote && metrics.remote.usedPercent !== undefined) { metrics.remote.health = DiskMetrics.getHealthStatus(metrics.remote.usedPercent); } res.json({ success: true, data: metrics }); } catch (error) { logger.error('Get all metrics error:', error); res.status(500).json({ success: false, error: 'Failed to fetch disk metrics', message: error.message }); } } /** * Get local metrics only * GET /api/admin/disk-metrics/local */ async function getLocalMetrics(req, res) { try { logger.info('Fetching local disk metrics'); const metrics = await DiskMetrics.getLocalMetrics(); if (metrics.usedPercent !== undefined) { metrics.health = DiskMetrics.getHealthStatus(metrics.usedPercent); } res.json({ success: true, data: metrics }); } catch (error) { logger.error('Get local metrics error:', error); res.status(500).json({ success: false, error: 'Failed to fetch local metrics', message: error.message }); } } /** * Get remote metrics only * GET /api/admin/disk-metrics/remote */ async function getRemoteMetrics(req, res) { try { logger.info('Fetching remote disk metrics'); const metrics = await DiskMetrics.getRemoteMetrics(); if (metrics.usedPercent !== undefined) { metrics.health = DiskMetrics.getHealthStatus(metrics.usedPercent); } res.json({ success: true, data: metrics }); } catch (error) { logger.error('Get remote metrics error:', error); res.status(500).json({ success: false, error: 'Failed to fetch remote metrics', message: error.message }); } } module.exports = { getAllMetrics, getLocalMetrics, getRemoteMetrics };