feat: view leaderboard U8 (#3017)
Reviewed-on: #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>
This commit was merged in pull request #3017.
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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.get("/leaderboard.php", leaderboardGetController);
|
||||
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);
|
||||
|
||||
export { statsRouter };
|
||||
|
||||
Reference in New Issue
Block a user