fix MongoDB taking guildId: undefined as a filter
All checks were successful
Build / build (20) (push) Successful in 41s
Build / build (18) (push) Successful in 1m11s
Build / build (22) (push) Successful in 1m11s
Build / build (18) (pull_request) Successful in 51s
Build / build (20) (pull_request) Successful in 1m10s
Build / build (22) (pull_request) Successful in 1m10s

This commit is contained in:
Sainan 2025-03-24 23:04:22 +01:00
parent 942f062e90
commit 02b443712a

View File

@ -34,23 +34,26 @@ export const getLeaderboard = async (
guildId?: string,
pivotId?: string
): Promise<ILeaderboardEntryClient[]> => {
const filter: { leaderboard: string; guildId?: string } = { leaderboard };
if (guildId) {
filter.guildId = guildId;
}
let entries: TLeaderboardEntryDocument[];
let r: number;
if (pivotId) {
const pivotDoc = await Leaderboard.findOne({ leaderboard, guildId, ownerId: pivotId });
const pivotDoc = await Leaderboard.findOne({ ...filter, ownerId: pivotId });
if (!pivotDoc) {
return [];
}
const beforeDocs = await Leaderboard.find({
leaderboard,
guildId,
...filter,
score: { $gt: pivotDoc.score }
})
.sort({ score: 1 })
.limit(before);
const afterDocs = await Leaderboard.find({
leaderboard,
guildId,
...filter,
score: { $lt: pivotDoc.score }
})
.sort({ score: -1 })
@ -58,12 +61,11 @@ export const getLeaderboard = async (
entries = [...beforeDocs.reverse(), pivotDoc, ...afterDocs];
r =
(await Leaderboard.countDocuments({
leaderboard,
guildId,
...filter,
score: { $gt: pivotDoc.score }
})) - beforeDocs.length;
} else {
entries = await Leaderboard.find({ leaderboard, guildId })
entries = await Leaderboard.find(filter)
.sort({ score: -1 })
.skip(before)
.limit(after - before);