Compare commits
2 Commits
f74a673b27
...
537999e462
Author | SHA1 | Date | |
---|---|---|---|
537999e462 | |||
901f8e377b |
@ -4,8 +4,8 @@ import { ILeaderboardEntryDatabase } from "../types/leaderboardTypes";
|
||||
const leaderboardEntrySchema = new Schema<ILeaderboardEntryDatabase>(
|
||||
{
|
||||
leaderboard: { type: String, required: true },
|
||||
accountId: { type: Schema.Types.ObjectId, required: true },
|
||||
displayName: { type: String, required: true },
|
||||
accountId: { type: Schema.Types.ObjectId, required: true },
|
||||
score: { type: Number, required: true },
|
||||
expiry: { type: Date, required: true }
|
||||
},
|
||||
@ -13,7 +13,7 @@ const leaderboardEntrySchema = new Schema<ILeaderboardEntryDatabase>(
|
||||
);
|
||||
|
||||
leaderboardEntrySchema.index({ leaderboard: 1 });
|
||||
leaderboardEntrySchema.index({ leaderboard: 1, accountId: 1 }, { unique: true });
|
||||
leaderboardEntrySchema.index({ leaderboard: 1, displayName: 1 }, { unique: true });
|
||||
leaderboardEntrySchema.index({ expiry: 1 }, { expireAfterSeconds: 0 }); // With this, MongoDB will automatically delete expired entries.
|
||||
|
||||
export const Leaderboard = model<ILeaderboardEntryDatabase>("Leaderboard", leaderboardEntrySchema);
|
||||
|
@ -20,8 +20,8 @@ export const submitLeaderboardScore = async (
|
||||
expiry = new Date(weekEnd);
|
||||
}
|
||||
await Leaderboard.findOneAndUpdate(
|
||||
{ leaderboard, accountId },
|
||||
{ $max: { score }, $set: { displayName, expiry } },
|
||||
{ leaderboard, displayName },
|
||||
{ $max: { score }, $set: { accountId, expiry } },
|
||||
{ upsert: true }
|
||||
);
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user