From 8c2872cd54e22806ab33074859cc373d7bbbbf45 Mon Sep 17 00:00:00 2001 From: ajdj100 Date: Mon, 13 Oct 2025 14:34:12 -0400 Subject: [PATCH] Refactored rank change logic --- api/routes/ranks.js | 16 ++++++---------- api/services/rankService.js | 23 +++++++++++++++++++++++ ui/src/api/rank.ts | 6 +++--- 3 files changed, 32 insertions(+), 13 deletions(-) create mode 100644 api/services/rankService.js diff --git a/api/routes/ranks.js b/api/routes/ranks.js index 8a61bf1..d32b269 100644 --- a/api/routes/ranks.js +++ b/api/routes/ranks.js @@ -1,20 +1,15 @@ const express = require('express'); const r = express.Router(); const ur = express.Router(); - +const { getAllRanks, insertMemberRank } = require('../services/rankService') const pool = require('../db'); //insert a new latest rank for a user -ur.post('/', async (req, res) => { +ur.post('/', async (req, res) => {3 try { const change = req.body?.change; console.log(change); - - const sql = `INSERT INTO members_ranks (member_id, rank_id, event_date) VALUES (?, ?, ?);`; - - const params = [change.member_id, change.rank_id, change.event_date] - - await pool.query(sql, params); + await insertMemberRank(change); res.sendStatus(201); } catch (err) { @@ -26,8 +21,9 @@ ur.post('/', async (req, res) => { //get all ranks r.get('/', async (req, res) => { try { - const result = await pool.query('SELECT id, name, short_name, sort_id FROM ranks;'); - res.json(result); + const ranks = await getAllRanks(); + console.log(ranks); + res.json(ranks); } catch (err) { console.error(err); res.status(500).json({ error: 'Internal server error' }); diff --git a/api/services/rankService.js b/api/services/rankService.js new file mode 100644 index 0000000..ff86b55 --- /dev/null +++ b/api/services/rankService.js @@ -0,0 +1,23 @@ +const pool = require('../db'); + +async function getAllRanks() { + const rows = await pool.query( + 'SELECT id, name, short_name, sort_id FROM ranks;' + ); + return rows; +} + +async function insertMemberRank(change) { + const sql = ` + INSERT INTO members_ranks (member_id, rank_id, event_date) + VALUES (?, ?, ?); + `; + console.log(change) + const params = [change.member_id, change.rank_id, change.event_date]; + await pool.query(sql, params); +} + +module.exports = { + getAllRanks, + insertMemberRank +}; diff --git a/ui/src/api/rank.ts b/ui/src/api/rank.ts index 80a8abf..1fdcf09 100644 --- a/ui/src/api/rank.ts +++ b/ui/src/api/rank.ts @@ -20,13 +20,13 @@ export async function getRanks(): Promise { } // Placeholder: submit a rank change -export async function submitRankChange(memberId: number, rankId: number, date: string): Promise<{ ok: boolean }> { - const res = await fetch(`${addr}/rank`, { +export async function submitRankChange(member_id: number, rank_id: number, date: string): Promise<{ ok: boolean }> { + const res = await fetch(`${addr}/memberRanks`, { method: "POST", headers: { "Content-Type": "application/json", }, - body: JSON.stringify({ memberId, rankId, date }), + body: JSON.stringify({ change: { member_id, rank_id, date } }), }) if (res.ok) {