From 1b3c6d9b3827050a852ad52ee963b3cb0316f390 Mon Sep 17 00:00:00 2001 From: Jack Date: Tue, 7 Sep 2021 15:06:34 +0100 Subject: [PATCH] added function to update leaderboard --- backend/api/controllers/leaderboards.js | 36 +++++++++++++++++++++++++ backend/api/routes/leaderboards.js | 9 ++++++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/backend/api/controllers/leaderboards.js b/backend/api/controllers/leaderboards.js index 1ddabe889..2ce650dda 100644 --- a/backend/api/controllers/leaderboards.js +++ b/backend/api/controllers/leaderboards.js @@ -1,4 +1,5 @@ const LeaderboardsDAO = require("../../dao/leaderboards"); +const ResultDAO = require("../../dao/result"); class LeaderboardsController { static async get(req, res, next) { @@ -42,6 +43,41 @@ class LeaderboardsController { } static async update(req, res, next) { + try { + const { rid } = req.body; + const { uid } = req.decodedToken; + if (!rid) { + return res.status(400).json({ + message: "Missing parameters", + }); + } + let result = await ResultDAO.getResult(uid, rid); + if (!result.language) result.language = "english"; + if ( + result.mode == "time" && + result.isPb && + (result.mode2 == 15 || result.mode2 == 60) && + ["english"].includes(result.language) + ) { + //run update + let retval = await LeaderboardsDAO.update( + result.mode, + result.mode2, + result.language, + uid + ); + return res.status(200).json(retval); + } else { + return res.status(400).json({ + message: "This result is not eligible for any leaderboard", + }); + } + } catch (e) { + return next(e); + } + } + + static async debugUpdate(req, res, next) { try { const { language, mode, mode2 } = req.body; if (!language || !mode || !mode2) { diff --git a/backend/api/routes/leaderboards.js b/backend/api/routes/leaderboards.js index f3e548a82..f416dc081 100644 --- a/backend/api/routes/leaderboards.js +++ b/backend/api/routes/leaderboards.js @@ -15,11 +15,18 @@ router.get( LeaderboardsController.getRank ); +router.post( + "/update", + RateLimit.limit60perhour, + authenticateRequest, + LeaderboardsController.update +); + //TODO remove me router.post( "/debug_update", RateLimit.limit1persec, - LeaderboardsController.update + LeaderboardsController.debugUpdate ); module.exports = router;