ensure that leaderboard-accountId pair is unique
Some checks failed
Build / build (18) (push) Failing after 1m16s
Build / build (18) (pull_request) Failing after 46s
Build / build (20) (pull_request) Failing after 1m12s
Build / build (20) (push) Failing after 44s
Build / build (22) (push) Failing after 1m12s
Build / build (22) (pull_request) Failing after 1m18s
Some checks failed
Build / build (18) (push) Failing after 1m16s
Build / build (18) (pull_request) Failing after 46s
Build / build (20) (pull_request) Failing after 1m12s
Build / build (20) (push) Failing after 44s
Build / build (22) (push) Failing after 1m12s
Build / build (22) (pull_request) Failing after 1m18s
This commit is contained in:
parent
ecb0fd91e5
commit
f74a673b27
@ -13,6 +13,7 @@ const leaderboardEntrySchema = new Schema<ILeaderboardEntryDatabase>(
|
||||
);
|
||||
|
||||
leaderboardEntrySchema.index({ leaderboard: 1 });
|
||||
leaderboardEntrySchema.index({ leaderboard: 1, accountId: 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, displayName },
|
||||
{ $max: { score }, $set: { accountId, expiry } },
|
||||
{ leaderboard, accountId },
|
||||
{ $max: { score }, $set: { displayName, expiry } },
|
||||
{ upsert: true }
|
||||
);
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user