返回提交历史
Modified
src/controllers/stats/leaderboardController.ts
+28
-1
Modified
src/routes/stats.ts
+4
-3
XFEstudio/SpaceNinjaServer
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
代码差异
2 个文件
+32
-4
@@ -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;
@@ -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 };