SpaceNinjaServer/src/models/leaderboardModel.ts

19 lines
781 B
TypeScript
Raw Normal View History

2025-03-24 12:53:09 +01:00
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 },
2025-03-24 14:17:07 +01:00
accountId: { type: Schema.Types.ObjectId, required: true },
2025-03-24 12:53:09 +01:00
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);