From f5d4ae1e0512817579ec1104a4f8694cc1b4035a Mon Sep 17 00:00:00 2001 From: Djeeberjr Date: Fri, 17 Oct 2025 13:08:51 +0200 Subject: [PATCH] added new routes & more mock data to server mock --- web/mock/data.json | 99 ++++++++++++++++++++++++++++++++++++++++++++++ web/mock/server.js | 52 ++++++++++++++++++------ 2 files changed, 139 insertions(+), 12 deletions(-) create mode 100644 web/mock/data.json diff --git a/web/mock/data.json b/web/mock/data.json new file mode 100644 index 0000000..8f9fc8d --- /dev/null +++ b/web/mock/data.json @@ -0,0 +1,99 @@ +{ + "mapping": [ + [ + "123456789ABC", + { + "first": "Feuerwehrman", + "last": "Sam" + } + ], + [ + "A1B2C3D4E5F6", + { + "first": "Luna", + "last": "Starforge" + } + ], + [ + "0F1E2D3C4B5A", + { + "first": "Gareth", + "last": "Ironwill" + } + ], + [ + "ABCDEF123456", + { + "first": "Nina", + "last": "Skylark" + } + ], + [ + "654321FEDCBA", + { + "first": "Tobias", + "last": "Marrow" + } + ], + [ + "DEADBEEFCAFE", + { + "first": "Astra", + "last": "Vale" + } + ], + [ + "BADA55C0FFEE", + { + "first": "Rowan", + "last": "Tempest" + } + ], + [ + "C001D00D1337", + { + "first": "Juniper", + "last": "Voss" + } + ] + ], + "days": [ + { + "date": 20372, + "ids": [ + "123456789ABC", + "A1B2C3D4E5F6" + ] + }, + { + "date": 20373, + "ids": [ + "0F1E2D3C4B5A", + "ABCDEF123456" + ] + }, + { + "date": 20374, + "ids": [ + "654321FEDCBA", + "DEADBEEFCAFE", + "BADA55C0FFEE" + ] + }, + { + "date": 20375, + "ids": [ + "C001D00D1337", + "A1B2C3D4E5F6", + "123456789ABC" + ] + }, + { + "date": 20376, + "ids": [ + "N0T3X1ST1D0", + "654321FEDCBA" + ] + } + ] +} diff --git a/web/mock/server.js b/web/mock/server.js index f8097d9..91afa6d 100644 --- a/web/mock/server.js +++ b/web/mock/server.js @@ -1,20 +1,14 @@ import express from "express"; import bodyParser from "body-parser"; +import mockData from "./data.json" with {type: "json"}; + const app = express(); const port = 3000; -app.use(bodyParser.json()); +const SECS_IN_DAY = 86_400; -let mappings = [ - [ - "123456789ABC", - { - first: "Feuerwehrman", - last: "Sam", - }, - ], -]; +app.use(bodyParser.json()); function generateRandomId() { const chars = "ABCDEF0123456789"; @@ -27,7 +21,7 @@ function generateRandomId() { // GET /api/mapping app.get("/api/mapping", (req, res) => { - res.json(mappings); + res.json(mockData.mapping); }); // POST /api/mapping @@ -45,11 +39,45 @@ app.post("/api/mapping", (req, res) => { } // Add new mapping - mappings.push([id, name]); + mockData.mappings.push([id, name]); res.status(201).send(""); }); +app.get("/api/day", (req, res) => { + let day; + + if (req.query.day) { + day = parseInt(req.query.day, 10); + }else if (req.query.timestamp) { + let ts = parseInt(req.query.timestamp, 10); + day = ts / SECS_IN_DAY; + }else { + return res.status(400).json({ error: "Missing or invalid 'day' parameter" }); + } + + if (isNaN(day)) { + return res.status(400).json({ error: "Missing or invalid 'day' parameter" }); + } + + let foundDay = mockData.days.find(e => e.date == day); + + if (!foundDay) { + return res.status(404).send("Not found"); + } + + res.status(200).json(foundDay); +}); + +app.get("/api/days", (req,res) => { + + let qFrom = parseInt(req.query.from) / SECS_IN_DAY; + let qTo = parseInt(req.query.to) / SECS_IN_DAY; + + let days = mockData.days.filter(e => e.date >= qFrom && e.date <= qTo).map(e => e.date); + + res.status(200).json(days); +}); // SSE route: /api/idevent app.get("/api/idevent", (req, res) => {