diff --git a/backend/api/controllers/leaderboards.js b/backend/api/controllers/leaderboards.js index 0dc347734..1ddabe889 100644 --- a/backend/api/controllers/leaderboards.js +++ b/backend/api/controllers/leaderboards.js @@ -3,13 +3,19 @@ const LeaderboardsDAO = require("../../dao/leaderboards"); class LeaderboardsController { static async get(req, res, next) { try { - const { language, mode, mode2 } = req.query; - if (!language || !mode || !mode2) { + const { language, mode, mode2, skip, limit } = req.query; + if (!language || !mode || !mode2 || !skip) { return res.status(400).json({ message: "Missing parameters", }); } - let retval = await LeaderboardsDAO.get(mode, mode2, language); + let retval = await LeaderboardsDAO.get( + mode, + mode2, + language, + skip, + limit + ); retval.forEach((item) => { delete item.uid; }); diff --git a/backend/dao/leaderboards.js b/backend/dao/leaderboards.js index e5da24374..8123fe5a3 100644 --- a/backend/dao/leaderboards.js +++ b/backend/dao/leaderboards.js @@ -3,10 +3,13 @@ const { mongoDB } = require("../init/mongodb"); const { ObjectID } = require("mongodb"); class LeaderboardsDAO { - static async get(mode, mode2, language) { + static async get(mode, mode2, language, skip, limit = 30) { + if (limit > 30 || limit === 0) limit = 30; const preset = await mongoDB() .collection(`leaderboards.${language}.${mode}.${mode2}`) .find() + .skip(parseInt(skip)) + .limit(parseInt(limit)) .toArray(); return preset; }