import express from 'express'; import { basicAuthMiddleware } from '../middlewares/auth.js'; import { broadcast } from '../services/websocket.js'; import { getWorkers, setWorkers, getDB } from '../services/mongodb.js'; const router = express.Router(); // Obtener workers del usuario autenticado (requiere autenticación) router.get('/', basicAuthMiddleware, async (req, res) => { try { const db = getDB(); if (!db) { return res.status(500).json({ error: 'MongoDB no está disponible' }); } const username = req.user.username; const workers = await getWorkers(username); res.json(workers); } catch (error) { console.error('Error obteniendo workers:', error); res.status(500).json({ error: error.message }); } }); // Actualizar workers del usuario autenticado (requiere autenticación) router.put('/', basicAuthMiddleware, async (req, res) => { try { const db = getDB(); if (!db) { return res.status(500).json({ error: 'MongoDB no está disponible' }); } const username = req.user.username; const workers = req.body; // Validar estructura básica if (!workers || typeof workers !== 'object') { return res.status(400).json({ error: 'Formato de workers inválido' }); } // Asegurar estructura mínima const workersData = { general: workers.general || { title_exclude: [], description_exclude: [] }, items: workers.items || [], disabled: workers.disabled || [] }; await setWorkers(username, workersData); // Notificar a todos los clientes WebSocket del usuario broadcast({ type: 'workers_updated', data: workersData, username // Incluir username para que los clientes sepan de quién son los workers }); res.json({ success: true }); } catch (error) { console.error('Error guardando workers:', error); res.status(500).json({ error: error.message }); } }); export default router;