cleaned up db resource leaks

This commit is contained in:
2025-12-14 16:53:40 -05:00
parent 81ae9ebea1
commit 011439fb19
4 changed files with 19 additions and 11 deletions

View File

@@ -207,8 +207,9 @@ router.post('/:id/comment', [requireLogin], async (req: Request, res: Response)
)
VALUES(?, ?, ?);`
try {
const conn = await pool.getConnection();
var conn = await pool.getConnection();
const result = await conn.query(sql, [appID, user.id, data])
console.log(result)
@@ -232,6 +233,8 @@ VALUES(?, ?, ?);`
} catch (err) {
console.error('Comment failed:', err);
res.status(500).json({ error: 'Could not post comment' });
} finally {
conn.release();
}
});
@@ -252,7 +255,7 @@ router.post('/:id/adminComment', [requireLogin, requireRole("Recruiter")], async
VALUES(?, ?, ?, 1);`
try {
const conn = await pool.getConnection();
var conn = await pool.getConnection();
const result = await conn.query(sql, [appID, user.id, data])
console.log(result)
@@ -277,6 +280,8 @@ VALUES(?, ?, ?, 1);`
} catch (err) {
console.error('Comment failed:', err);
res.status(500).json({ error: 'Could not post comment' });
} finally {
conn.release();
}
});

View File

@@ -34,8 +34,9 @@ passport.use(new OpenIDConnectStrategy({
// console.log('id_token claims:', JSON.stringify(jwtClaims, null, 2));
// console.log('preferred_username:', jwtClaims?.preferred_username);
const con = await pool.getConnection();
try {
var con = await pool.getConnection();
await con.beginTransaction();
//lookup existing user
@@ -111,10 +112,11 @@ passport.deserializeUser(function (user, cb) {
const memberID = user.memberId as number;
const con = await pool.getConnection();
var userData: { id: number, name: string, roles: Role[], state: MemberState };
try {
var con = await pool.getConnection();
let userResults = await con.query(`SELECT id, name FROM members WHERE id = ?;`, [memberID])
userData = userResults[0];
let userRoles = await getUserRoles(memberID);

View File

@@ -45,7 +45,7 @@ ur.delete('/', [requireMemberState(MemberState.Member), requireRole("17th Admini
//get all roles
r.get('/', [requireMemberState(MemberState.Member)], async (req, res) => {
try {
const con = await pool.getConnection();
var con = await pool.getConnection();
// Get all roles
const roles = await con.query('SELECT * FROM roles;');
@@ -73,11 +73,12 @@ r.get('/', [requireMemberState(MemberState.Member)], async (req, res) => {
members: roleIdToMembers[role.id] || []
}));
con.release();
res.json(result);
} catch (err) {
console.error(err);
res.status(500).json({ error: 'Internal server error' });
} finally {
con.release();
}
});

View File

@@ -79,9 +79,9 @@ export async function getCourseEventDetails(id: number): Promise<CourseEventDeta
}
export async function insertCourseEvent(event: CourseEventDetails): Promise<number> {
console.log(event);
const con = await pool.getConnection();
try {
var con = await pool.getConnection();
await con.beginTransaction();
const res = await con.query("INSERT INTO course_events (course_id, event_date, remarks, created_by) VALUES (?, ?, ?, ?);", [event.course_id, toDateTime(event.event_date), event.remarks, event.created_by]);
var eventID: number = res.insertId;
@@ -98,12 +98,12 @@ export async function insertCourseEvent(event: CourseEventDetails): Promise<numb
VALUES (?, ?, ?, ?, ?, ?);`, [attendee.attendee_id, eventID, attendee.attendee_role_id, attendee.passed_bookwork, attendee.passed_qual, attendee.remarks]);
}
await con.commit();
await con.release();
return Number(eventID);
} catch (error) {
await con.rollback();
await con.release();
if (con) await con.rollback();
throw error;
} finally {
if (con) await con.release();
}
}