Lania/api.js

69 lines
2.1 KiB
JavaScript

const http = require('http');
const mysql = require('mysql2');
// Configuración de la conexión a MySQL
const db = mysql.createConnection({
host: 'localhost', // MySQL está en tu misma máquina
user: 'root', // Usuario por defecto (cámbialo si es necesario)
password: 'Starfox19.', // Asegúrate de que sea la contraseña correcta
database: 'lania', // Nombre de tu base de datos
});
// Conectar a MySQL
db.connect((err) => {
if (err) {
console.error('❌ Error al conectar a MySQL:', err.message);
return;
}
console.log('✅ Conectado a MySQL');
});
// Crear servidor HTTP
const server = http.createServer((req, res) => {
// Solo aceptamos GET en la ruta principal
if (req.method === 'GET' && req.url === '/') {
const query = `
SELECT
e.id_usuario AS user_id,
e.correo AS email,
e.estado_procedencia AS procedencia,
e.edad AS rango_edad,
e.empresa AS proveedor,
s.consentimiento AS consentimiento_publicidad
FROM entrada e
LEFT JOIN salida s ON e.id_usuario = s.id_usuario
`;
// Ejecutar consulta
db.query(query, (err, results) => {
if (err) {
res.writeHead(500, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ error: 'Error en la base de datos' }));
return;
}
// Formatear respuesta
const data = results.map((user) => ({
user_id: user.user_id.toString().padStart(3, '0'),
email: user.email,
procedencia: user.procedencia,
rango_edad: user.rango_edad,
proveedor: user.proveedor,
consentimiento_publicidad: user.consentimiento_publicidad,
}));
// Enviar respuesta
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify(data, null, 2)); // Formato bonito en JSON
});
} else {
// Ruta no encontrada
res.writeHead(404, { 'Content-Type': 'text/plain' });
res.end('Ruta no encontrada');
}
});
// Iniciar servidor en el puerto 3000
server.listen(3001, () => {
console.log('🚀 Servidor Node.js escuchando en http://localhost:3001');
});