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