import { Document, model, Schema, Types } from "mongoose"; import { ILeaderboardEntryDatabase } from "../types/leaderboardTypes"; const leaderboardEntrySchema = new Schema( { leaderboard: { type: String, required: true }, displayName: { type: String, required: true }, accountId: { type: Schema.Types.ObjectId, 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("Leaderboard", leaderboardEntrySchema); // eslint-disable-next-line @typescript-eslint/ban-types export type TLeaderboardEntryDocument = Document & { _id: Types.ObjectId; __v: number; } & ILeaderboardEntryDatabase;