mirror of
https://github.com/monkeytypegame/monkeytype.git
synced 2025-12-28 02:48:43 +08:00
refactor: remake aggregate to allow for an index to be added in the future
This commit is contained in:
parent
5e350274f8
commit
6f7900a868
1 changed files with 46 additions and 23 deletions
|
|
@ -65,50 +65,73 @@ export async function update(
|
|||
message: string;
|
||||
rank?: number;
|
||||
}> {
|
||||
const str = `lbPersonalBests.${mode}.${mode2}.${language}`;
|
||||
const key = `lbPersonalBests.${mode}.${mode2}.${language}`;
|
||||
const start1 = performance.now();
|
||||
const lb = await db
|
||||
.collection<MonkeyTypes.User>("users")
|
||||
.aggregate<MonkeyTypes.LeaderboardEntry>(
|
||||
[
|
||||
{
|
||||
$project: {
|
||||
_id: 0,
|
||||
[`${key}.wpm`]: 1,
|
||||
[`${key}.acc`]: 1,
|
||||
[`${key}.timestamp`]: 1,
|
||||
banned: 1,
|
||||
lbOptOut: 1,
|
||||
needsToChangeName: 1,
|
||||
timeTyping: 1,
|
||||
uid: 1,
|
||||
name: 1,
|
||||
discordId: 1,
|
||||
discordAvatar: 1,
|
||||
inventory: 1,
|
||||
},
|
||||
},
|
||||
{
|
||||
$match: {
|
||||
[str + ".wpm"]: {
|
||||
$exists: true,
|
||||
[`${key}.wpm`]: {
|
||||
$gt: 0,
|
||||
},
|
||||
[str + ".acc"]: {
|
||||
$exists: true,
|
||||
[`${key}.acc`]: {
|
||||
$gt: 0,
|
||||
},
|
||||
[str + ".timestamp"]: {
|
||||
$exists: true,
|
||||
[`${key}.timestamp`]: {
|
||||
$gt: 0,
|
||||
},
|
||||
banned: {
|
||||
$ne: true,
|
||||
},
|
||||
lbOptOut: {
|
||||
$ne: true,
|
||||
},
|
||||
needsToChangeName: {
|
||||
$ne: true,
|
||||
},
|
||||
banned: { $exists: false },
|
||||
lbOptOut: { $exists: false },
|
||||
needsToChangeName: { $exists: false },
|
||||
timeTyping: {
|
||||
$gt: process.env.MODE === "dev" ? 0 : 7200,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
$sort: {
|
||||
[`${key}.wpm`]: -1,
|
||||
[`${key}.acc`]: -1,
|
||||
[`${key}.timestamp`]: -1,
|
||||
},
|
||||
},
|
||||
{
|
||||
$set: {
|
||||
[str + ".uid"]: "$uid",
|
||||
[str + ".name"]: "$name",
|
||||
[str + ".discordId"]: "$discordId",
|
||||
[str + ".discordAvatar"]: "$discordAvatar",
|
||||
[str + ".badges"]: "$inventory.badges",
|
||||
[`${key}.uid`]: "$uid",
|
||||
[`${key}.name`]: "$name",
|
||||
[`${key}.discordId`]: "$discordId",
|
||||
[`${key}.discordAvatar`]: "$discordAvatar",
|
||||
[`${key}.badges`]: "$inventory.badges",
|
||||
},
|
||||
},
|
||||
{
|
||||
$replaceRoot: {
|
||||
newRoot: "$" + str,
|
||||
},
|
||||
},
|
||||
{
|
||||
$sort: {
|
||||
wpm: -1,
|
||||
acc: -1,
|
||||
timestamp: -1,
|
||||
newRoot: `$${key}`,
|
||||
},
|
||||
},
|
||||
],
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue