mongodb
Signed-off-by: Omar Sánchez Pizarro <omar.sanchez@pistacero.net>
This commit is contained in:
@@ -1,32 +1,65 @@
|
||||
import express from 'express';
|
||||
import { readJSON, writeJSON } from '../utils/fileUtils.js';
|
||||
import { PATHS } from '../config/constants.js';
|
||||
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 (requiere autenticación - solo administradores)
|
||||
router.get('/', basicAuthMiddleware, (req, res) => {
|
||||
// Obtener workers del usuario autenticado (requiere autenticación)
|
||||
router.get('/', basicAuthMiddleware, async (req, res) => {
|
||||
try {
|
||||
const workers = readJSON(PATHS.WORKERS, { items: [], general: {}, disabled: [] });
|
||||
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 (requiere autenticación)
|
||||
router.put('/', basicAuthMiddleware, (req, res) => {
|
||||
// Actualizar workers del usuario autenticado (requiere autenticación)
|
||||
router.put('/', basicAuthMiddleware, async (req, res) => {
|
||||
try {
|
||||
const workers = req.body;
|
||||
if (writeJSON(PATHS.WORKERS, workers)) {
|
||||
broadcast({ type: 'workers_updated', data: workers });
|
||||
res.json({ success: true });
|
||||
} else {
|
||||
res.status(500).json({ error: 'Error guardando workers' });
|
||||
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 });
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user