const { asyncController } = require('../utils/asyncController'); const { getMemoryLog, clearMemoryLog } = require('../utils/errorLogger'); const { env } = require('../configs/env'); const parsePage = (val, fallback) => { const n = parseInt(String(val || ''), 10); return Number.isInteger(n) && n > 0 ? n : fallback; }; const getErrorLogs = asyncController(async (req, res) => { const page = parsePage(req.query.page, 1); const pageSize = Math.min(100, parsePage(req.query.pageSize, 50)); let items; let total; if (env.isProduction) { const ErrorLog = require('../models/ErrorLog'); const skip = (page - 1) * pageSize; [total, items] = await Promise.all([ ErrorLog.countDocuments(), ErrorLog.find().sort({ timestamp: -1 }).skip(skip).limit(pageSize).lean(), ]); } else { const all = getMemoryLog(); total = all.length; const skip = (page - 1) * pageSize; items = all.slice(skip, skip + pageSize); } res.json({ success: true, items, total, page, pageSize, totalPages: Math.max(1, Math.ceil((total || 0) / pageSize)), }); }); const clearErrorLogs = asyncController(async (req, res) => { clearMemoryLog(); if (env.isProduction) { const ErrorLog = require('../models/ErrorLog'); await ErrorLog.deleteMany({}); } res.json({ success: true, cleared: true }); }); module.exports = { getErrorLogs, clearErrorLogs };