import express from 'express'; import { readJSON } from '../utils/fileUtils.js'; import { PATHS } from '../config/constants.js'; import { getFavorites, getNotifiedArticles, getRedisClient } from '../services/redis.js'; import { basicAuthMiddleware } from '../middlewares/auth.js'; import { broadcast } from '../services/websocket.js'; const router = express.Router(); // Obtener estadísticas router.get('/stats', async (req, res) => { try { const workers = readJSON(PATHS.WORKERS, { items: [] }); const favorites = await getFavorites(); const notifiedArticles = await getNotifiedArticles(); const stats = { totalWorkers: workers.items?.length || 0, activeWorkers: (workers.items || []).filter(w => !workers.disabled?.includes(w.name)).length, totalFavorites: favorites.length, totalNotified: notifiedArticles.length, platforms: { wallapop: notifiedArticles.filter(a => a.platform === 'wallapop').length, vinted: notifiedArticles.filter(a => a.platform === 'vinted').length, }, }; res.json(stats); } catch (error) { res.status(500).json({ error: error.message }); } }); // Limpiar toda la caché de Redis (requiere autenticación) router.delete('/cache', basicAuthMiddleware, async (req, res) => { try { const redisClient = getRedisClient(); if (!redisClient) { return res.status(500).json({ error: 'Redis no está disponible' }); } // Obtener todas las claves que empiezan con 'notified:' const keys = await redisClient.keys('notified:*'); if (!keys || keys.length === 0) { return res.json({ success: true, message: 'Cache ya está vacío', count: 0 }); } // Eliminar todas las claves const count = keys.length; for (const key of keys) { await redisClient.del(key); } // Notificar a los clientes WebSocket broadcast({ type: 'cache_cleared', data: { count, timestamp: Date.now() } }); // También actualizar favoritos (debería estar vacío ahora) const favorites = await getFavorites(); broadcast({ type: 'favorites_updated', data: favorites }); res.json({ success: true, message: `Cache limpiado: ${count} artículos eliminados`, count }); } catch (error) { console.error('Error limpiando cache de Redis:', error); res.status(500).json({ error: error.message }); } }); export default router;