Spaces:
Running
Running
| 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 }; | |