import BaseModel from './BaseModel'; import { index, getModelForClass, prop, DocumentType, mongoose, Ref } from '@typegoose/typegoose'; import Marquee from './Marquee'; import Notice from './Notice'; import GMMail from './GMMail'; /** * 开服策略 */ @index({ id: 1 }) export default class Maintenance extends BaseModel { @prop({ required: true }) code: string; // 策略唯一标志 @prop({ required: true, type: Number }) serverIds: number[]; // 服务器类型 @prop({ required: true }) isOpen: boolean; // 维护是否使用 @prop({ required: true }) startTime: Date; // 维护开始时间 @prop({ ref: 'Marquee', type: mongoose.Schema.Types.ObjectId }) marquee: Ref; // 跑马灯,连接到marquee表 @prop({ ref: 'Notice', type: mongoose.Schema.Types.ObjectId }) notice: Ref; // 维护公告 @prop({ ref: 'Notice', type: mongoose.Schema.Types.ObjectId }) mail: Ref; // 维护结束邮件 public static async findOpenMaintenance() { const rec: MaintenanceType = await MaintenanceModel.findOne({ isOpen: true }, { _id: 0 }).populate('marquee').populate('notice').lean(); return rec; } public static async findByCode(code: string) { const rec: MaintenanceType = await MaintenanceModel.findOne({ code }).lean(); return rec; } } export const MaintenanceModel = getModelForClass(Maintenance); export interface MaintenanceType extends Pick, keyof Maintenance> { } export type MaintenanceTypeParam = Partial; // 将所有字段变成可选项