XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

SpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 1 Star 0
UTF-8
import type { Document, Types } from "mongoose";
import { model, Schema } from "mongoose";
import type { ILeaderboardEntryDatabase } from "../types/leaderboardTypes.ts";

const leaderboardEntrySchema = new Schema<ILeaderboardEntryDatabase>(
    {
        leaderboard: { type: String, required: true },
        ownerId: { type: Schema.Types.ObjectId, required: true },
        displayName: { type: String, required: true },
        score: { type: Number, required: true },
        guildId: Schema.Types.ObjectId,
        expiry: Date,
        guildTier: Number
    },
    { id: false }
);

leaderboardEntrySchema.index({ leaderboard: 1 });
leaderboardEntrySchema.index({ leaderboard: 1, ownerId: 1 }, { unique: true });
leaderboardEntrySchema.index({ expiry: 1 }, { expireAfterSeconds: 0 }); // With this, MongoDB will automatically delete expired entries.

export const Leaderboard = model<ILeaderboardEntryDatabase>("Leaderboard", leaderboardEntrySchema);

export type TLeaderboardEntryDocument = Document<unknown, {}, ILeaderboardEntryDatabase> & {
    _id: Types.ObjectId;
    __v: number;
} & ILeaderboardEntryDatabase;