feat: view leaderboard U8
Some checks failed
Build / build (pull_request) Failing after 6m30s

This commit is contained in:
2025-11-11 02:31:31 +01:00
parent f63954c796
commit ae9cd3301c
2 changed files with 32 additions and 4 deletions

View File

@@ -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;

View File

@@ -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 };