require('dotenv').config(); // Carga las contraseñas del archivo .env const express = require('express'); const cors = require('cors'); const { Client } = require('pg'); const app = express(); // --- MIDDLEWARES (Configuración) --- app.use(express.json()); // Permite leer datos JSON app.use(cors()); // ¡VITAL! Permite que tu Web (React) se conecte // --- CONFIGURACIÓN DE LA BASE DE DATOS --- const dbConfig = { host: process.env.DB_HOST, user: process.env.DB_USER, password: process.env.DB_PASS, database: process.env.DB_NAME, port: 5432, }; // --- RUTAS (Los "Botones" de tu servidor) --- // 1. Ruta de prueba (Health Check) app.get('/', (req, res) => { res.send('
Sistema funcionando correctamente.
'); }); // 2. EL BUZÓN (POST): Recibe trabajos de los Robots app.post('/api/nuevo-servicio', async (req, res) => { const { empresa_id, nombre_cliente, direccion, descripcion, origen } = req.body; console.log("📩 Recibido nuevo parte de trabajo..."); console.log(` Cliente: ${nombre_cliente}`); const client = new Client(dbConfig); try { await client.connect(); // Insertamos en la base de datos const query = ` INSERT INTO servicios (empresa_id, nombre_cliente, direccion, descripcion, origen, estado) VALUES ($1, $2, $3, $4, $5, 'PENDIENTE') RETURNING id; `; const values = [empresa_id, nombre_cliente, direccion, descripcion, origen || 'MANUAL']; const resultado = await client.query(query, values); console.log(`✅ Parte guardado con ID: ${resultado.rows[0].id}`); res.status(201).json({ mensaje: 'Servicio creado correctamente', id_servicio: resultado.rows[0].id }); } catch (err) { console.error("❌ Error guardando el parte:", err); res.status(500).json({ error: 'Error interno de base de datos' }); } finally { await client.end(); } }); // 3. LA ANTENA (GET): Envía la lista a tu Web (React) app.get('/api/servicios', async (req, res) => { const client = new Client(dbConfig); try { await client.connect(); console.log("📡 La web solicita datos actualizados..."); // Pedimos los últimos 50 servicios const resultado = await client.query('SELECT * FROM servicios ORDER BY fecha_entrada DESC LIMIT 50'); res.json(resultado.rows); // Enviamos JSON a la web } catch (err) { console.error("❌ Error al leer servicios:", err); res.status(500).json({ error: 'Error al obtener servicios' }); } finally { await client.end(); } }); // --- ARRANCAR EL MOTOR --- const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(`\n🚀 SERVIDOR INTEGRAREPARA ARRANCADO`); console.log(`📡 Escuchando en: http://localhost:${PORT}`); });