Files
ZYZ/shared/db/RougelikeExtend.ts
2023-09-08 21:25:39 +08:00

51 lines
1.8 KiB
TypeScript

import BaseModel from './BaseModel';
import { getModelForClass, prop, DocumentType, index } from '@typegoose/typegoose';
@index({ roleId: 1, limitId: 1 })
export class RewardInter {
@prop({ required: true })
id: number;
@prop({ required: true })
count: number;
@prop({ required: true })
expireTime?: number;
}
export default class RougelikeExtend extends BaseModel {
@prop({ required: true })
roleId: string;
@prop({ required: true, default: 0 })
limitId: number; // 前置试炼id,只会是已通关
@prop({ required: true, type: RewardInter, default: 0, _id: false})
firstReward: RewardInter[]; //首通奖励
@prop({ required: true, default: '' })
gameCode: string;
public static async update(roleId: string, limitId: number, firstReward: RewardInter[], gameCode: string, lean = true) {
const result: RougelikeExtendType = await RougelikeExtendModel.findOneAndUpdate({ roleId, limitId }, { firstReward, gameCode }, { new: true, upsert: true }).lean(lean);
return result;
}
public static async findByRoleId(roleId: string, lean = true) {
const result: RougelikeExtendType[] = await RougelikeExtendModel.find({ roleId }).lean(lean);
return result;
}
public static async findByRoleIdAndLimitId(roleId: string, limitId: number, lean = true) {
const result: RougelikeExtendType = await RougelikeExtendModel.findOne({ roleId, limitId }).lean(lean);
return result;
}
}
export const RougelikeExtendModel = getModelForClass(RougelikeExtend);
export interface RougelikeExtendType extends Pick<DocumentType<RougelikeExtend>, keyof RougelikeExtend> { };
export type RougelikeExtendPara = Partial<RougelikeExtendType>; // 将所有字段变成可选项