From 3ba3c1c0cb2999550d47ef385779f0f1f9d4080a Mon Sep 17 00:00:00 2001 From: Theis Gaedigk Date: Fri, 20 Feb 2026 16:22:13 +0100 Subject: [PATCH] improved error logging for the api route to return or take loans --- backendV2/routes/api/api.database.js | 21 ++++++++++++++++----- backendV2/routes/api/api.route.js | 12 ++++++------ 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/backendV2/routes/api/api.database.js b/backendV2/routes/api/api.database.js index b824ad4..d0a13d3 100644 --- a/backendV2/routes/api/api.database.js +++ b/backendV2/routes/api/api.database.js @@ -48,7 +48,8 @@ export const setReturnDateV2 = async (loanCode) => { [loanCode], ); - if (items.length === 0) return { success: false }; + if (items.length === 0) + return { success: false, message: "No items found for loan" }; const itemIds = Array.isArray(items[0].loaned_items_id) ? items[0].loaned_items_id @@ -71,11 +72,20 @@ export const setReturnDateV2 = async (loanCode) => { return { success: true, data: { returned: true } }; } catch (error) { console.error("setReturnDateV2 error:", error); - return { success: false }; + return { success: false, message: "Failed to set return date" }; } }; export const setTakeDateV2 = async (loanCode) => { + const [isTaken] = await pool.query( + "SELECT take_date FROM loans WHERE loan_code = ?", + [loanCode], + ); + + if (isTaken.length === 0 || isTaken[0].take_date !== null) { + return { success: false, message: "Loan not found or already taken" }; + } + const [items] = await pool.query( "SELECT loaned_items_id FROM loans WHERE loan_code = ?", [loanCode], @@ -86,7 +96,8 @@ export const setTakeDateV2 = async (loanCode) => { [loanCode], ); - if (items.length === 0) return { success: false }; + if (items.length === 0) + return { success: false, message: "No items found for loan" }; const itemIds = Array.isArray(items[0].loaned_items_id) ? items[0].loaned_items_id @@ -98,14 +109,14 @@ export const setTakeDateV2 = async (loanCode) => { ); const [result] = await pool.query( - "UPDATE loans SET take_date = NOW() WHERE loan_code = ?", + "UPDATE loans SET take_date = NOW() WHERE loan_code = ? AND take_date IS NULL", [loanCode], ); if (result.affectedRows > 0 && setItemStates.affectedRows > 0) { return { success: true }; } - return { success: false }; + return { message: "Failed to set take date", success: false }; }; export const getAllLoansV2 = async () => { diff --git a/backendV2/routes/api/api.route.js b/backendV2/routes/api/api.route.js index 56a289d..fc638d8 100644 --- a/backendV2/routes/api/api.route.js +++ b/backendV2/routes/api/api.route.js @@ -47,7 +47,7 @@ router.get( } else { res.status(404).json({ message: "Loan not found" }); } - } + }, ); // Route for API to set the return date by the loan code @@ -58,11 +58,11 @@ router.post( const loanCode = req.params.loan_code; const result = await setReturnDateV2(loanCode); if (result.success) { - res.status(200).json({ data: result.data }); + res.status(200).json({}); } else { res.status(500).json({ message: "Failed to set return date" }); } - } + }, ); // Route for API to set the take away date by the loan code @@ -73,11 +73,11 @@ router.post( const loanCode = req.params.loan_code; const result = await setTakeDateV2(loanCode); if (result.success) { - res.status(200).json({ data: result.data }); + res.status(200).json({}); } else { - res.status(500).json({ message: "Failed to set take date" }); + res.status(500).json({ message: result.message }); } - } + }, ); // Route for API to open a door