diff --git a/package.json b/package.json index 45ccf51..424d9a9 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "db:install": "node ./server/db/install", "db:data-fake": "node ./server/db/data-fake", "dev": "nodemon ./server/app", - "start": "source ~/.nvm/nvm.sh && nvm use 16.15.1 && npm install && node ./server/app" + "start": "npm install && node ./server/app" }, "repository": { "type": "git", diff --git a/server/app.js b/server/app.js index 3f1d904..1e52e0b 100644 --- a/server/app.js +++ b/server/app.js @@ -34,8 +34,19 @@ app.get('/', (req, res) => res.send('API de Inscripciones a CEDETEC')); 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( - `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; +}); diff --git a/server/config/mariadb.conf.js b/server/config/mariadb.conf.js index efa145e..9003984 100644 --- a/server/config/mariadb.conf.js +++ b/server/config/mariadb.conf.js @@ -9,71 +9,65 @@ const pool = mariadb.createPool({ }); 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 conn = await pool.getConnection().catch((err) => { - throw new Error('No se pudo conectar con la base de datos. ' + err); - }); - return conn .query( `SELECT id_periodo FROM periodo WHERE activo = b'1' LIMIT 1` - ) - .then((rows) => { - conn.end(); - if (!rows || rows.length === 0) { - console.log('No existe') - throw new Error('No existe un periodo activo en el sistema') - } - return rows; - }) - .catch((err) => { - conn.end(); - throw new Error('Error al validar periodo activo: ' + err); - }); + ) + .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); + }); // console.log('Este es el periodo: ', rows[0]) // console.log('Este es el id del periodo: ', rows[0].id_periodo) @@ -91,11 +85,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) @@ -107,13 +102,11 @@ const validarAlumnoInscrito = async (idCuenta) => { if (rows.length === 0) return null; - conn.end(); - return rows[0] + return rows[0]; } catch (error) { - conn.end(); - 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..a34d816 100644 --- a/server/config/sequelize.conf.js +++ b/server/config/sequelize.conf.js @@ -7,7 +7,7 @@ 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,