added more API functions

This commit is contained in:
2025-08-19 21:23:29 +02:00
parent ffc8fbcefc
commit 6d4afa46d7
2 changed files with 60 additions and 2 deletions

View File

@@ -3,16 +3,19 @@ import dotenv from "dotenv";
import { import {
getItemsFromDatabaseV2, getItemsFromDatabaseV2,
changeInSafeStateV2, changeInSafeStateV2,
setReturnDateV2,
setTakeDateV2,
} from "../services/database.js"; } from "../services/database.js";
dotenv.config(); dotenv.config();
const router = express.Router(); const router = express.Router();
// Route for API to get ALL items from the database
router.get("/items/:key", async (req, res) => { router.get("/items/:key", async (req, res) => {
if (req.params.key === process.env.ADMIN_ID) { if (req.params.key === process.env.ADMIN_ID) {
const result = await getItemsFromDatabaseV2(); const result = await getItemsFromDatabaseV2();
if (result.success) { if (result.success) {
res.status(200).json(result.data); res.status(200).json({ data: result.data });
} else { } else {
res.status(500).json({ message: "Failed to fetch items" }); res.status(500).json({ message: "Failed to fetch items" });
} }
@@ -21,6 +24,7 @@ router.get("/items/:key", async (req, res) => {
} }
}); });
// Route for API to control the position of an item
router.post("/controlInSafe/:key/:itemId/:state", async (req, res) => { router.post("/controlInSafe/:key/:itemId/:state", async (req, res) => {
if (req.params.key === process.env.ADMIN_ID) { if (req.params.key === process.env.ADMIN_ID) {
const itemId = req.params.itemId; const itemId = req.params.itemId;
@@ -28,7 +32,7 @@ router.post("/controlInSafe/:key/:itemId/:state", async (req, res) => {
if (state === "1" || state === "0") { if (state === "1" || state === "0") {
const result = await changeInSafeStateV2(itemId, state); const result = await changeInSafeStateV2(itemId, state);
if (result.success) { if (result.success) {
res.status(200).json({ message: "Item state updated successfully" }); res.status(200).json({ data: result.data });
} else { } else {
res.status(500).json({ message: "Failed to update item state" }); res.status(500).json({ message: "Failed to update item state" });
} }
@@ -40,4 +44,36 @@ router.post("/controlInSafe/:key/:itemId/:state", async (req, res) => {
} }
}); });
// Route for API to set the return date
router.post("/setReturnDate/:key/:loan_code", async (req, res) => {
if (req.params.key === process.env.ADMIN_ID) {
const loanCode = req.params.loan_code;
const result = await setReturnDateV2(loanCode);
if (result.success) {
res.status(200).json({ data: result.data });
} else {
res.status(500).json({ message: "Failed to set return date" });
}
} else {
res.status(403).json({ message: "Access denied" });
}
});
// Route for API to set the take away date
router.post("/setTakeDate/:key/:loan_code", async (req, res) => {
if (req.params.key === process.env.ADMIN_ID) {
const loanCode = req.params.loan_code;
const result = await setTakeDateV2(loanCode);
if (result.success) {
res.status(200).json({ data: result.data });
} else {
res.status(500).json({ message: "Failed to set take date" });
}
} else {
res.status(403).json({ message: "Access denied" });
}
});
export default router; export default router;

View File

@@ -39,6 +39,28 @@ export const changeInSafeStateV2 = async (itemId, state) => {
return { success: false }; return { success: false };
}; };
export const setReturnDateV2 = async (loanCode) => {
const [result] = await pool.query(
"UPDATE loans SET returned_date = NOW() WHERE loan_code = ?",
[loanCode]
);
if (result.affectedRows > 0) {
return { success: true };
}
return { success: false };
};
export const setTakeDateV2 = async (loanCode) => {
const [result] = await pool.query(
"UPDATE loans SET take_date = NOW() WHERE loan_code = ?",
[loanCode]
);
if (result.affectedRows > 0) {
return { success: true };
}
return { success: false };
};
export const getItemsFromDatabase = async (role) => { export const getItemsFromDatabase = async (role) => {
const sql = const sql =
role == 0 role == 0