From 8903baef52f907857c9931e841334442df47de72 Mon Sep 17 00:00:00 2001 From: ajdj100 Date: Thu, 18 Dec 2025 22:38:36 -0500 Subject: [PATCH] Upgraded handling of duplicate member roles Close #56 --- api/src/routes/roles.ts | 8 +++++++- api/src/services/rolesService.ts | 1 - 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/api/src/routes/roles.ts b/api/src/routes/roles.ts index 8070314..d77093f 100644 --- a/api/src/routes/roles.ts +++ b/api/src/routes/roles.ts @@ -16,10 +16,16 @@ ur.post('/', [requireMemberState(MemberState.Member), requireRole("17th Administ try { const body = req.body; - assignUserGroup(body.member_id, body.role_id); + await assignUserGroup(body.member_id, body.role_id); res.sendStatus(201); } catch (err) { + if (err?.code === 'ER_DUP_ENTRY') { + return res.status(400).json({ + error: 'Member already has this role', + }); + } + console.error('Insert failed:', err); res.status(500).json({ error: 'Failed to add to group' }); } diff --git a/api/src/services/rolesService.ts b/api/src/services/rolesService.ts index 9e2275d..19eb228 100644 --- a/api/src/services/rolesService.ts +++ b/api/src/services/rolesService.ts @@ -3,7 +3,6 @@ import pool from '../db'; import { Role, RoleSummary } from '@app/shared/types/roles' export async function assignUserGroup(userID: number, roleID: number) { - const sql = `INSERT INTO members_roles (member_id, role_id) VALUES (?, ?);`; const params = [userID, roleID];