2 Commits

Author SHA1 Message Date
Patriots01 b1465cfdb4 Mod 2026-04-22 21:33:22 +01:00
Patriots01 a4a714616e mod 2026-04-22 21:32:10 +01:00
3 changed files with 80 additions and 56 deletions
+13 -2
View File
@@ -34,8 +34,19 @@ app.get('/', (req, res) => res.send('API de Inscripciones a CEDETEC'));
app.use(require('./routes/index')); app.use(require('./routes/index'));
app.listen(Number(process.env.PORT), () => const port = Number(process.env.PORT) || 3000;
const server = app.listen(port, () =>
console.log( console.log(
`API Inscripciones corriendo en el puerto: ${process.env.PORT}`.rainbow `API Inscripciones corriendo en el puerto: ${port}`.rainbow
) )
); );
server.on('error', (error) => {
if (error.code === 'EADDRINUSE') {
console.error(
`Error: el puerto ${port} ya está en uso. Usa otra variable PORT en .env o detén el proceso que lo está ocupando.`
);
process.exit(1);
}
throw error;
});
+45 -38
View File
@@ -6,69 +6,75 @@ const pool = mariadb.createPool({
user: process.env.USER_DB, user: process.env.USER_DB,
password: process.env.PASSWORD_DB, password: process.env.PASSWORD_DB,
database: process.env.SAT_DB, database: process.env.SAT_DB,
connectionLimit: 5, // Limitar a 5 conexiones para evitar sobrecarga
acquireTimeout: 60000, // Timeout de 60 segundos para adquirir conexión
timeout: 60000, // Timeout general
}); });
const obtenerDatosUsr = async (numeroCuenta) => { const obtenerDatosUsr = async (numeroCuenta) => {
const conn = await pool.getConnection().catch((err) => { let conn;
try {
conn = await pool.getConnection().catch((err) => {
throw new Error('No se pudo conectar con la db. ' + err); throw new Error('No se pudo conectar con la db. ' + err);
}); });
return conn const rows = await conn.query(
.query(
`SELECT id_carrera, generacion FROM alumno WHERE id_cuenta = ${numeroCuenta}` `SELECT id_carrera, generacion FROM alumno WHERE id_cuenta = ${numeroCuenta}`
) );
.then((rows) => {
conn.end();
return rows[0]; return rows[0];
}) } catch (err) {
.catch((err) => {
conn.end();
throw new Error('Hubo un problema con el querry.' + err); throw new Error('Hubo un problema con el querry.' + err);
}); } finally {
if (conn) conn.end();
}
}; };
// Agregue para profesores // Agregue para profesores
const buscarProfesorPorNumero = async (numeroTrabajador) => { const buscarProfesorPorNumero = async (numeroTrabajador) => {
//console.log("Buscando profesor con numeroCuenta:", numeroTrabajador); //console.log("Buscando profesor con numeroCuenta:", numeroTrabajador);
const conn = await pool.getConnection().catch((err) => { let conn;
try {
conn = await pool.getConnection().catch((err) => {
throw new Error('No se pudo conectar con la base de datos. ' + err); throw new Error('No se pudo conectar con la base de datos. ' + err);
}); });
return conn const rows = await conn.query(
.query(
`SELECT nombre, id_cuenta FROM alumno WHERE id_cuenta = ?`, `SELECT nombre, id_cuenta FROM alumno WHERE id_cuenta = ?`,
[numeroTrabajador] // NUmero de cuenta [numeroTrabajador] // NUmero de cuenta
) );
.then((rows) => {
console.log(numeroTrabajador) console.log(numeroTrabajador);
conn.end();
if (rows.length === 0) return null; if (rows.length === 0) return null;
//console.log('Resultado de la consulta:', rows); // <--- Aquí //console.log('Resultado de la consulta:', rows); // <--- Aquí
return rows[0]; // { nombre: 'Juan', rfc: 'JUAP123' } return rows[0]; // { nombre: 'Juan', rfc: 'JUAP123' }
}) } catch (err) {
.catch((err) => {
conn.end();
throw new Error('Error al buscar el profesor: ' + err); throw new Error('Error al buscar el profesor: ' + err);
}); } finally {
if (conn) conn.end();
}
}; };
const validarPeriodoActivo = async (conn) => { const validarPeriodoActivo = async (conn) => {
const rows = await conn.query( return conn
`SELECT id_periodo .query(
FROM periodo `SELECT id_periodo FROM periodo WHERE activo = b'1' LIMIT 1`
WHERE activo = b'1' )
LIMIT 1` .then((rows) => {
);
if (!rows || rows.length === 0) { if (!rows || rows.length === 0) {
console.log('No existe') console.log('No existe');
throw new Error('No existe un periodo activo en el sistema') throw new Error('No existe un periodo activo en el sistema');
} }
return rows;
})
.catch((err) => {
throw new Error('Error al validar periodo activo: ' + err);
});
console.log('Este es el periodo: ', rows[0]) // console.log('Este es el periodo: ', rows[0])
console.log('Este es el id del periodo: ', rows[0].id_periodo) // console.log('Este es el id del periodo: ', rows[0].id_periodo)
return rows[0].id_periodo; // return rows[0].id_periodo;
} }
const validarAlumnoInscrito = async (idCuenta) => { const validarAlumnoInscrito = async (idCuenta) => {
@@ -82,11 +88,12 @@ const validarAlumnoInscrito = async (idCuenta) => {
throw new Error('Error: el número de trabajador no existe'); throw new Error('Error: el número de trabajador no existe');
} }
const conn = await pool.getConnection().catch((err) => { let conn;
try {
conn = await pool.getConnection().catch((err) => {
throw new Error('No se pudo conectar con la base de datos. ' + err); throw new Error('No se pudo conectar con la base de datos. ' + err);
}); });
try {
const idPeriodoActivo = await validarPeriodoActivo(conn); const idPeriodoActivo = await validarPeriodoActivo(conn);
console.log("id del periodo: " + idPeriodoActivo) console.log("id del periodo: " + idPeriodoActivo)
@@ -98,11 +105,11 @@ const validarAlumnoInscrito = async (idCuenta) => {
if (rows.length === 0) return null; if (rows.length === 0) return null;
return rows[0] return rows[0];
} catch (error) { } catch (error) {
throw new Error('Error al validar alumno inscrito: ' + err) throw new Error('Error al validar alumno inscrito: ' + error);
} finally { } finally {
conn.end() if (conn) conn.end();
} }
// return conn // return conn
+7 -1
View File
@@ -7,12 +7,18 @@ const sequelize = new Sequelize(
process.env.PASSWORD_DB, process.env.PASSWORD_DB,
{ {
host: process.env.HOST_DB, host: process.env.HOST_DB,
dialect: process.env.TYPEDB, dialect: process.env.TYPEDB || 'mariadb',
logging: false, logging: false,
dialectOptions: { dialectOptions: {
useUTC: false, useUTC: false,
}, },
timezone: '-06:00', timezone: '-06:00',
pool: {
max: 5, // Máximo 5 conexiones
min: 0, // Mínimo 0
acquire: 30000, // Tiempo para adquirir conexión (30s)
idle: 10000, // Tiempo idle antes de cerrar (10s)
},
} }
); );