import { APP_ID } from './../consts/consts'; import BaseModel from './BaseModel'; import { index, getModelForClass, prop } from '@typegoose/typegoose'; class ServerInfo { @prop({ required: true}) name: string; @prop({ required: true}) host: string; @prop({ required: false}) port: number; @prop({ required: true}) status: number; @prop({ required: true}) createTime: Date; @prop({ required: true}) serverType: string; } /** * 用户字段接口 */ @index({ id: 1 }) export default class Game extends BaseModel { @prop({ required: true}) id: number; @prop({ required: true}) name: string; @prop({ required: true}) nameEn: string; @prop({ required: true}) des: string; @prop({ required: true}) serverList: Array; @prop({ required: true}) iconUrl: string; @prop({ required: true}) version: string; @prop({ required: true}) versionCode: number; public static async getServerListByType(serverType: string) { let game = await GameModel.findOne().lean(); if (!game) { const serverInfo: ServerInfo = {name: '常山少年', host: 'pinus_test.trgame.cn', port: 3014, status: 1, createTime: new Date(), serverType: 'official'}; const iconUrl = `https://download.tgamebox.cn/avatar/${APP_ID}/1.png`; game = await GameModel.findOneAndUpdate({}, {id: 1, name: '赵云传', nameEn: 'zyz', des: '牛逼的战棋', iconUrl, version: '0.0.1', versionCode: 1, $push: {serverList: serverInfo}}, {upsert: true, new: true}).lean(); } let serverList: Array = game ? game.serverList : []; serverList = serverList.filter(item => { return item.serverType === serverType; }) return serverList; } //#endregion } export const GameModel = getModelForClass(Game);