69 lines
2.0 KiB
JavaScript
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;
|
|
|