52 lines
1.6 KiB
TypeScript
52 lines
1.6 KiB
TypeScript
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>; // 跑马灯,连接到marquee表
|
||
|
||
@prop({ ref: 'Notice', type: mongoose.Schema.Types.ObjectId })
|
||
notice: Ref<Notice>; // 维护公告
|
||
|
||
@prop({ ref: 'Notice', type: mongoose.Schema.Types.ObjectId })
|
||
mail: Ref<GMMail>; // 维护结束邮件
|
||
|
||
|
||
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<DocumentType<Maintenance>, keyof Maintenance> { }
|
||
export type MaintenanceTypeParam = Partial<MaintenanceType>; // 将所有字段变成可选项
|