Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8a6fdc718a | |||
| 954c76b899 | |||
| 577f40a817 | |||
| c1e79a0b7b | |||
| ceeb284bfa | |||
| 73b5a91d89 | |||
| d2223b8b4c | |||
| 13d3981f58 |
Generated
+1364
-3014
File diff suppressed because it is too large
Load Diff
+5
-5
@@ -8,7 +8,7 @@
|
|||||||
"db:install": "node ./server/db/install",
|
"db:install": "node ./server/db/install",
|
||||||
"db:data-fake": "node ./server/db/data-fake",
|
"db:data-fake": "node ./server/db/data-fake",
|
||||||
"dev": "nodemon ./server/app",
|
"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": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@@ -17,8 +17,8 @@
|
|||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "^0.25.0",
|
"axios": "^1.13.4",
|
||||||
"bcrypt": "^5.0.1",
|
"bcrypt": "^6.0.0",
|
||||||
"body-parser": "^1.19.0",
|
"body-parser": "^1.19.0",
|
||||||
"colors": "^1.4.0",
|
"colors": "^1.4.0",
|
||||||
"convert-array-to-csv": "^2.0.0",
|
"convert-array-to-csv": "^2.0.0",
|
||||||
@@ -28,10 +28,10 @@
|
|||||||
"express": "^4.17.1",
|
"express": "^4.17.1",
|
||||||
"fs": "^0.0.1-security",
|
"fs": "^0.0.1-security",
|
||||||
"gmail-send": "^1.8.14",
|
"gmail-send": "^1.8.14",
|
||||||
"jsonwebtoken": "^8.5.1",
|
"jsonwebtoken": "^9.0.3",
|
||||||
"mariadb": "^2.5.3",
|
"mariadb": "^2.5.3",
|
||||||
"moment": "^2.29.1",
|
"moment": "^2.29.1",
|
||||||
"multer": "^1.4.4",
|
"multer": "^2.0.2",
|
||||||
"nodemailer": "^7.0.5",
|
"nodemailer": "^7.0.5",
|
||||||
"sequelize": "^6.6.2",
|
"sequelize": "^6.6.2",
|
||||||
"validator": "^13.6.0"
|
"validator": "^13.6.0"
|
||||||
|
|||||||
+13
-2
@@ -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;
|
||||||
|
});
|
||||||
|
|||||||
@@ -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;
|
||||||
throw new Error('No se pudo conectar con la db. ' + err);
|
try {
|
||||||
});
|
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);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
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
|
// 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;
|
||||||
throw new Error('No se pudo conectar con la base de datos. ' + err);
|
try {
|
||||||
});
|
conn = await pool.getConnection().catch((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) {
|
||||||
})
|
throw new Error('Error al buscar el profesor: ' + err);
|
||||||
.catch((err) => {
|
} finally {
|
||||||
conn.end();
|
if (conn) conn.end();
|
||||||
throw new Error('Error al buscar el profesor: ' + err);
|
}
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
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) {
|
||||||
|
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('Este es el periodo: ', rows[0])
|
||||||
console.log('No existe')
|
// console.log('Este es el id del periodo: ', rows[0].id_periodo)
|
||||||
throw new Error('No existe un periodo activo en el sistema')
|
// 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) => {
|
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;
|
||||||
throw new Error('No se pudo conectar con la base de datos. ' + err);
|
|
||||||
});
|
|
||||||
|
|
||||||
try {
|
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);
|
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,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)
|
||||||
|
},
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -37,6 +37,19 @@ async function realizarInscripcion(req, res) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// // Validacion del periodo
|
||||||
|
// const periodoActivo = await Periodo.findOne({
|
||||||
|
// where: {
|
||||||
|
// activo: 1 // o true
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
|
||||||
|
// if (!periodoActivo) {
|
||||||
|
// throw new Error("No hay un periodo activo");
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 3. Crear inscripción
|
// 3. Crear inscripción
|
||||||
await AlumnoInscrito.create({
|
await AlumnoInscrito.create({
|
||||||
id_cuenta: usuario.id_cuenta,
|
id_cuenta: usuario.id_cuenta,
|
||||||
|
|||||||
Reference in New Issue
Block a user