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
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:
parent
942f062e90
commit
02b443712a
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user