From ae9cd3301c6d3196f437cc826e4812badefe5ed5 Mon Sep 17 00:00:00 2001 From: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Date: Tue, 11 Nov 2025 02:31:31 +0100 Subject: [PATCH 1/2] feat: view leaderboard U8 --- .../stats/leaderboardController.ts | 29 ++++++++++++++++++- src/routes/stats.ts | 7 +++-- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/controllers/stats/leaderboardController.ts b/src/controllers/stats/leaderboardController.ts index bd269a27..d0d21138 100644 --- a/src/controllers/stats/leaderboardController.ts +++ b/src/controllers/stats/leaderboardController.ts @@ -1,7 +1,7 @@ import { getLeaderboard } from "../../services/leaderboardService.ts"; import type { RequestHandler } from "express"; -export const leaderboardController: RequestHandler = async (req, res) => { +export const leaderboardPostController: RequestHandler = async (req, res) => { const payload = JSON.parse(String(req.body)) as ILeaderboardRequest; res.json({ results: await getLeaderboard( @@ -15,6 +15,33 @@ export const leaderboardController: RequestHandler = async (req, res) => { }); }; +export const leaderboardGetController: RequestHandler = async (req, res) => { + const payload: ILeaderboardRequest = { + field: "archived." + String(req.query.field), + before: Number(req.query.before), + after: Number(req.query.after), + pivotId: req.query.pivotAccountId ? String(req.query.pivotAccountId) : undefined, + guildId: undefined, + guildTier: undefined + }; + res.json({ + players: ( + await getLeaderboard( + payload.field, + payload.before, + payload.after, + payload.pivotId, + payload.guildId, + payload.guildTier + ) + ).map(entry => ({ + DisplayName: entry.n, + score: entry.s, + rank: entry.r + })) + }); +}; + interface ILeaderboardRequest { field: string; before: number; diff --git a/src/routes/stats.ts b/src/routes/stats.ts index 8f3dfe5b..989d20ae 100644 --- a/src/routes/stats.ts +++ b/src/routes/stats.ts @@ -1,14 +1,15 @@ import express from "express"; import { viewController } from "../controllers/stats/viewController.ts"; import { uploadController } from "../controllers/stats/uploadController.ts"; -import { leaderboardController } from "../controllers/stats/leaderboardController.ts"; +import { leaderboardPostController, leaderboardGetController } from "../controllers/stats/leaderboardController.ts"; const statsRouter = express.Router(); statsRouter.get("/view.php", viewController); statsRouter.get("/profileStats.php", viewController); statsRouter.post("/upload.php", uploadController); -statsRouter.post("/leaderboardWeekly.php", leaderboardController); -statsRouter.post("/leaderboardArchived.php", leaderboardController); +statsRouter.post("/leaderboardWeekly.php", leaderboardPostController); +statsRouter.post("/leaderboardArchived.php", leaderboardPostController); +statsRouter.get("/leaderboard.php", leaderboardGetController); export { statsRouter }; -- 2.49.1 From 8da6781530fdaef4118d145001ec45780ad582a0 Mon Sep 17 00:00:00 2001 From: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Date: Tue, 11 Nov 2025 02:32:18 +0100 Subject: [PATCH 2/2] Update stats.ts --- src/routes/stats.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/stats.ts b/src/routes/stats.ts index 989d20ae..ad8d6879 100644 --- a/src/routes/stats.ts +++ b/src/routes/stats.ts @@ -7,9 +7,9 @@ const statsRouter = express.Router(); statsRouter.get("/view.php", viewController); statsRouter.get("/profileStats.php", viewController); +statsRouter.get("/leaderboard.php", leaderboardGetController); statsRouter.post("/upload.php", uploadController); statsRouter.post("/leaderboardWeekly.php", leaderboardPostController); statsRouter.post("/leaderboardArchived.php", leaderboardPostController); -statsRouter.get("/leaderboard.php", leaderboardGetController); export { statsRouter }; -- 2.49.1