const LeaderboardPositionsPacket = require("../Packets/LeaderboardPositions"); const leaderboards = require("../Data/leaderboard"); module.exports = async function (ws, message, player) { const leaderboardPositionsData = leaderboards.map(async (leaderboard, i) => { const leaderboardPositionFromDB = await execute(`SELECT 1 + COUNT(*) AS position FROM leaderboard_${i + 1} WHERE amount > COALESCE((SELECT amount FROM leaderboard_${i + 1} WHERE id = ?), 0)`, [player.id]); if (!leaderboardPositionFromDB.data) return { selfPosition: 0, totalPositionsLength: leaderboard.size }; const selfPosition = leaderboardPositionFromDB.data[0].position; return { selfPosition: selfPosition > leaderboard.size ? 0 : selfPosition, totalPositionsLength: leaderboard.size }; }); const leaderboardPositions = await Promise.all(leaderboardPositionsData); const leaderboardPositionsPacket = LeaderboardPositionsPacket(leaderboardPositions); player.map.registerIndividualNetworkPacket(player.id, leaderboardPositionsPacket); };