18 lines
713 B
TypeScript
18 lines
713 B
TypeScript
|
import { model, Schema } from "mongoose";
|
||
|
import { ILeaderboardEntryDatabase } from "../types/leaderboardTypes";
|
||
|
|
||
|
const leaderboardEntrySchema = new Schema<ILeaderboardEntryDatabase>(
|
||
|
{
|
||
|
leaderboard: { type: String, required: true },
|
||
|
displayName: { type: String, required: true },
|
||
|
score: { type: Number, required: true },
|
||
|
expiry: { type: Date, required: true }
|
||
|
},
|
||
|
{ id: false }
|
||
|
);
|
||
|
|
||
|
leaderboardEntrySchema.index({ leaderboard: 1 });
|
||
|
leaderboardEntrySchema.index({ expiry: 1 }, { expireAfterSeconds: 0 }); // With this, MongoDB will automatically delete expired entries.
|
||
|
|
||
|
export const Leaderboard = model<ILeaderboardEntryDatabase>("Leaderboard", leaderboardEntrySchema);
|