Subir archivos a "/"
This commit is contained in:
commit
a87ca37b58
|
|
@ -0,0 +1,90 @@
|
||||||
|
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('<h1>🤖 Servidor Integrarepara: ONLINE</h1><p>Sistema funcionando correctamente.</p>');
|
||||||
|
});
|
||||||
|
|
||||||
|
// 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}`);
|
||||||
|
});
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,19 @@
|
||||||
|
{
|
||||||
|
"name": "integrarepara-api",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"keywords": [],
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"type": "commonjs",
|
||||||
|
"dependencies": {
|
||||||
|
"cors": "^2.8.5",
|
||||||
|
"dotenv": "^17.2.3",
|
||||||
|
"express": "^5.2.1",
|
||||||
|
"pg": "^8.17.2"
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue