Files
wallabicher/web/backend/routes/workers.js
Omar Sánchez Pizarro 81bf0675ed mongodb
Signed-off-by: Omar Sánchez Pizarro <omar.sanchez@pistacero.net>
2026-01-20 03:21:50 +01:00

69 lines
2.0 KiB
JavaScript

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;