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,
|
guildId?: string,
|
||||||
pivotId?: string
|
pivotId?: string
|
||||||
): Promise<ILeaderboardEntryClient[]> => {
|
): Promise<ILeaderboardEntryClient[]> => {
|
||||||
|
const filter: { leaderboard: string; guildId?: string } = { leaderboard };
|
||||||
|
if (guildId) {
|
||||||
|
filter.guildId = guildId;
|
||||||
|
}
|
||||||
|
|
||||||
let entries: TLeaderboardEntryDocument[];
|
let entries: TLeaderboardEntryDocument[];
|
||||||
let r: number;
|
let r: number;
|
||||||
if (pivotId) {
|
if (pivotId) {
|
||||||
const pivotDoc = await Leaderboard.findOne({ leaderboard, guildId, ownerId: pivotId });
|
const pivotDoc = await Leaderboard.findOne({ ...filter, ownerId: pivotId });
|
||||||
if (!pivotDoc) {
|
if (!pivotDoc) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
const beforeDocs = await Leaderboard.find({
|
const beforeDocs = await Leaderboard.find({
|
||||||
leaderboard,
|
...filter,
|
||||||
guildId,
|
|
||||||
score: { $gt: pivotDoc.score }
|
score: { $gt: pivotDoc.score }
|
||||||
})
|
})
|
||||||
.sort({ score: 1 })
|
.sort({ score: 1 })
|
||||||
.limit(before);
|
.limit(before);
|
||||||
const afterDocs = await Leaderboard.find({
|
const afterDocs = await Leaderboard.find({
|
||||||
leaderboard,
|
...filter,
|
||||||
guildId,
|
|
||||||
score: { $lt: pivotDoc.score }
|
score: { $lt: pivotDoc.score }
|
||||||
})
|
})
|
||||||
.sort({ score: -1 })
|
.sort({ score: -1 })
|
||||||
@ -58,12 +61,11 @@ export const getLeaderboard = async (
|
|||||||
entries = [...beforeDocs.reverse(), pivotDoc, ...afterDocs];
|
entries = [...beforeDocs.reverse(), pivotDoc, ...afterDocs];
|
||||||
r =
|
r =
|
||||||
(await Leaderboard.countDocuments({
|
(await Leaderboard.countDocuments({
|
||||||
leaderboard,
|
...filter,
|
||||||
guildId,
|
|
||||||
score: { $gt: pivotDoc.score }
|
score: { $gt: pivotDoc.score }
|
||||||
})) - beforeDocs.length;
|
})) - beforeDocs.length;
|
||||||
} else {
|
} else {
|
||||||
entries = await Leaderboard.find({ leaderboard, guildId })
|
entries = await Leaderboard.find(filter)
|
||||||
.sort({ score: -1 })
|
.sort({ score: -1 })
|
||||||
.skip(before)
|
.skip(before)
|
||||||
.limit(after - before);
|
.limit(after - before);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user