Files
ZYZ/shared/db/GVGBattleRec.ts
T

79 lines
2.4 KiB
TypeScript

// GVGBattleRec 数据库表,挑战记录信息
import BaseModel from "./BaseModel";
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
import { genCode } from "../pubUtils/util";
import { LineupHero } from './../domain/roleField/hero';
import { GVGTeamType } from "./GVGTeam";
class TeamInfo {
@prop({ required: true })
roleId: string; // 玩家id
@prop({ required: true })
teamCode: string; // 玩家队伍唯一标识
@prop({ required: true })
teamId: number; // 队伍id,1-3,玩家的第几个队伍
@prop({ required: true })
leagueCode: string; // 联军
@prop({ required: true })
guildCode: string; // 军团
@prop({ required: false })
areaId: number;
@prop({ required: false })
cityId: number;
@prop({ required: false })
pointId: number;
@prop({ required: true })
head: number; // 头像
@prop({ required: true })
spine: number; // 形象
@prop({ required: true })
frame: number; // 相框
@prop({ required: true, default: 0 })
durability: number; // 耐久
@prop({ required: true, type: () => LineupHero, _id: false })
lineup: LineupHero[]
}
@index({ battleCode: 1 })
export default class GVGBattleRec extends BaseModel {
@prop({ required: true })
battleCode: string; // 战斗记录
@prop({ required: true, type: TeamInfo, _id: false })
attackTeam: TeamInfo; // 挑战队伍
@prop({ required: true, type: TeamInfo, _id: false })
defenseTeam: TeamInfo; // 防守队伍
@prop({ required: true })
isSuccess: boolean;
public static async createRec(attackTeam: GVGTeamType, defenseTeam: GVGTeamType) {
const battleCode = genCode(8);
const result: GVGBattleRecType = await GVGBattleRecModel.findOneAndUpdate({ battleCode }, { $set: { attackTeam, defenseTeam, isSuccess: false } }).lean();
return result;
}
public static async findByBattleCode(battleCode: string) {
const result: GVGBattleRecType = await GVGBattleRecModel.findOne({ battleCode }).lean();
return result;
}
}
export const GVGBattleRecModel = getModelForClass(GVGBattleRec);
export interface GVGBattleRecType extends Pick<DocumentType<GVGBattleRec>, keyof GVGBattleRec> {};
export type GVGBattleRecUpdate = Partial<GVGBattleRecType>; // 将所有字段变成可选项