XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFESpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/XFESpaceNinjaServer

feat: view leaderboard U8 (#3017)

Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/3017 Reviewed-by: Sainan <63328889+sainan@users.noreply.github.com> Co-authored-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Co-committed-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>

6167eead
AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
提交于

代码差异

2 个文件 +32 -4
Modified src/controllers/stats/leaderboardController.ts +28 -1
@@ -1,7 +1,7 @@
1 1 import { getLeaderboard } from "../../services/leaderboardService.ts";
2 2 import type { RequestHandler } from "express";
3 3
4 export const leaderboardController: RequestHandler = async (req, res) => {
4 export const leaderboardPostController: RequestHandler = async (req, res) => {
5 5 const payload = JSON.parse(String(req.body)) as ILeaderboardRequest;
6 6 res.json({
7 7 results: await getLeaderboard(
@@ -15,6 +15,33 @@ export const leaderboardController: RequestHandler = async (req, res) => {
15 15 });
16 16 };
17 17
18 export const leaderboardGetController: RequestHandler = async (req, res) => {
19 const payload: ILeaderboardRequest = {
20 field: "archived." + String(req.query.field),
21 before: Number(req.query.before),
22 after: Number(req.query.after),
23 pivotId: req.query.pivotAccountId ? String(req.query.pivotAccountId) : undefined,
24 guildId: undefined,
25 guildTier: undefined
26 };
27 res.json({
28 players: (
29 await getLeaderboard(
30 payload.field,
31 payload.before,
32 payload.after,
33 payload.pivotId,
34 payload.guildId,
35 payload.guildTier
36 )
37 ).map(entry => ({
38 DisplayName: entry.n,
39 score: entry.s,
40 rank: entry.r
41 }))
42 });
43 };
44
18 45 interface ILeaderboardRequest {
19 46 field: string;
20 47 before: number;
Modified src/routes/stats.ts +4 -3
@@ -1,14 +1,15 @@
1 1 import express from "express";
2 2 import { viewController } from "../controllers/stats/viewController.ts";
3 3 import { uploadController } from "../controllers/stats/uploadController.ts";
4 import { leaderboardController } from "../controllers/stats/leaderboardController.ts";
4 import { leaderboardPostController, leaderboardGetController } from "../controllers/stats/leaderboardController.ts";
5 5
6 6 const statsRouter = express.Router();
7 7
8 8 statsRouter.get("/view.php", viewController);
9 9 statsRouter.get("/profileStats.php", viewController);
10 statsRouter.get("/leaderboard.php", leaderboardGetController);
10 11 statsRouter.post("/upload.php", uploadController);
11 statsRouter.post("/leaderboardWeekly.php", leaderboardController);
12 statsRouter.post("/leaderboardArchived.php", leaderboardController);
12 statsRouter.post("/leaderboardWeekly.php", leaderboardPostController);
13 statsRouter.post("/leaderboardArchived.php", leaderboardPostController);
13 14
14 15 export { statsRouter };