diff --git a/server/config/mariadb.conf.js b/server/config/mariadb.conf.js index 9bb3df6..6528ba6 100644 --- a/server/config/mariadb.conf.js +++ b/server/config/mariadb.conf.js @@ -6,69 +6,75 @@ const pool = mariadb.createPool({ user: process.env.USER_DB, password: process.env.PASSWORD_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 conn = await pool.getConnection().catch((err) => { - throw new Error('No se pudo conectar con la db. ' + err); - }); - - return conn - .query( - `SELECT id_carrera, generacion FROM alumno WHERE id_cuenta = ${numeroCuenta}` - ) - .then((rows) => { - conn.end(); - return rows[0]; - }) - .catch((err) => { - conn.end(); - throw new Error('Hubo un problema con el querry.' + err); + let conn; + try { + conn = await pool.getConnection().catch((err) => { + throw new Error('No se pudo conectar con la db. ' + err); }); + + const rows = await conn.query( + `SELECT id_carrera, generacion FROM alumno WHERE id_cuenta = ${numeroCuenta}` + ); + + return rows[0]; + } catch (err) { + throw new Error('Hubo un problema con el querry.' + err); + } finally { + if (conn) conn.end(); + } }; // Agregue para profesores const buscarProfesorPorNumero = async (numeroTrabajador) => { //console.log("Buscando profesor con numeroCuenta:", numeroTrabajador); - const conn = await pool.getConnection().catch((err) => { - throw new Error('No se pudo conectar con la base de datos. ' + err); - }); + let conn; + try { + conn = await pool.getConnection().catch((err) => { + throw new Error('No se pudo conectar con la base de datos. ' + err); + }); - return conn - .query( + const rows = await conn.query( `SELECT nombre, id_cuenta FROM alumno WHERE id_cuenta = ?`, [numeroTrabajador] // NUmero de cuenta - ) - .then((rows) => { - console.log(numeroTrabajador) - conn.end(); - if (rows.length === 0) return null; - //console.log('Resultado de la consulta:', rows); // <--- Aquí - return rows[0]; // { nombre: 'Juan', rfc: 'JUAP123' } - }) - .catch((err) => { - conn.end(); - throw new Error('Error al buscar el profesor: ' + err); - }); + ); + + console.log(numeroTrabajador); + if (rows.length === 0) return null; + //console.log('Resultado de la consulta:', rows); // <--- Aquí + return rows[0]; // { nombre: 'Juan', rfc: 'JUAP123' } + } catch (err) { + throw new Error('Error al buscar el profesor: ' + err); + } finally { + if (conn) conn.end(); + } }; const validarPeriodoActivo = async (conn) => { - const rows = await conn.query( - `SELECT id_periodo - FROM periodo - WHERE activo = b'1' - LIMIT 1` - ); + return conn + .query( + `SELECT id_periodo FROM periodo WHERE activo = b'1' LIMIT 1` + ) + .then((rows) => { + if (!rows || rows.length === 0) { + console.log('No existe'); + throw new Error('No existe un periodo activo en el sistema'); + } + return rows; + }) + .catch((err) => { + throw new Error('Error al validar periodo activo: ' + err); + }); - if (!rows || rows.length === 0) { - console.log('No existe') - throw new Error('No existe un periodo activo en el sistema') - } - - console.log('Este es el periodo: ', rows[0]) - console.log('Este es el id del periodo: ', rows[0].id_periodo) - return rows[0].id_periodo; + // console.log('Este es el periodo: ', rows[0]) + // console.log('Este es el id del periodo: ', rows[0].id_periodo) + // return rows[0].id_periodo; } const validarAlumnoInscrito = async (idCuenta) => { @@ -82,11 +88,12 @@ const validarAlumnoInscrito = async (idCuenta) => { throw new Error('Error: el número de trabajador no existe'); } - const conn = await pool.getConnection().catch((err) => { - throw new Error('No se pudo conectar con la base de datos. ' + err); - }); - + let conn; try { + conn = await pool.getConnection().catch((err) => { + throw new Error('No se pudo conectar con la base de datos. ' + err); + }); + const idPeriodoActivo = await validarPeriodoActivo(conn); console.log("id del periodo: " + idPeriodoActivo) @@ -98,11 +105,11 @@ const validarAlumnoInscrito = async (idCuenta) => { if (rows.length === 0) return null; - return rows[0] + return rows[0]; } catch (error) { - throw new Error('Error al validar alumno inscrito: ' + err) + throw new Error('Error al validar alumno inscrito: ' + error); } finally { - conn.end() + if (conn) conn.end(); } // return conn diff --git a/server/config/sequelize.conf.js b/server/config/sequelize.conf.js index ccf837b..70996b8 100644 --- a/server/config/sequelize.conf.js +++ b/server/config/sequelize.conf.js @@ -7,12 +7,18 @@ const sequelize = new Sequelize( process.env.PASSWORD_DB, { host: process.env.HOST_DB, - dialect: process.env.TYPEDB, + dialect: process.env.TYPEDB || 'mariadb', logging: false, dialectOptions: { useUTC: false, }, 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) + }, } );