添加数据库类型别名

This commit is contained in:
luying
2020-12-15 18:08:29 +08:00
parent 1565dd206a
commit 2d774fc0e4
38 changed files with 393 additions and 321 deletions

View File

@@ -1,5 +1,5 @@
import BaseModel from './BaseModel';
import { index, getModelForClass, prop } from '@typegoose/typegoose';
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
class Heroes {
@prop({ required: true })
@@ -36,25 +36,25 @@ export default class PvpDefense extends BaseModel {
public static async findByRoleId(roleId: string, lean = true) {
const result = await PvpDefenseModel.findOne({ roleId }).lean(lean);
const result: PvpDefenseType = await PvpDefenseModel.findOne({ roleId }).lean(lean);
return result;
}
public static async findByScale(roleId: string, min: number, max: number, lean = true) {
const result = await PvpDefenseModel.find({ roleId: {$ne: roleId}, ce: { $lte: max, $gte: min } }).sort({updatedAt: -1}).limit(100).lean(lean);
const result: PvpDefenseType[] = await PvpDefenseModel.find({ roleId: {$ne: roleId}, ce: { $lte: max, $gte: min } }).sort({updatedAt: -1}).limit(100).lean(lean);
return result;
}
public static async createPvpDefense(params: {roleId: string, roleName: string, heroes: Array<any>, ce: number}, lean=true) {
const doc = new PvpDefenseModel();
const update = Object.assign(doc.toJSON(), params);
const defense = await PvpDefenseModel.findOneAndUpdate({ roleId: params.roleId }, update, {upsert: true, new: true}).lean(lean);
const defense: PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({ roleId: params.roleId }, update, {upsert: true, new: true}).lean(lean);
return defense;
}
public static async addHeroToDefense(roleId: string, heroInfo: any, ce: number, lean=true) {
const defense = await PvpDefenseModel.findOneAndUpdate({ roleId: roleId }, {
const defense: PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({ roleId: roleId }, {
$inc: {ce},
$push: { heroes: heroInfo }
}, {upsert: true, new: true}).lean(lean);
@@ -63,7 +63,7 @@ export default class PvpDefense extends BaseModel {
}
public static async removeHeroFromDefense(roleId: string, hid: number, ce: number, lean=true) {
const defense = await PvpDefenseModel.findOneAndUpdate({ roleId: roleId }, {
const defense: PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({ roleId: roleId }, {
$inc: {ce: -1 * ce},
$pull: { heroes: { actorId: hid }}
}, {upsert: true, new: true}).lean(lean);
@@ -73,14 +73,16 @@ export default class PvpDefense extends BaseModel {
public static async updateCe(roleId: string, hid: number, ce: number, oldCe: number, lean = true) {
let distance = ce - oldCe;
const rec = await PvpDefenseModel.findOneAndUpdate({roleId, 'heroes.actorId': hid}, {$inc: {ce: distance}}).lean(lean);
const rec: PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({roleId, 'heroes.actorId': hid}, {$inc: {ce: distance}}).lean(lean);
return rec
}
public static async deleteAccount(roleId: string, lean = true) {
let result = await PvpDefenseModel.deleteMany({roleId}).lean(lean);
return result||{};
public static async deleteAccount(roleId: string) {
let result = await PvpDefenseModel.deleteMany({roleId});
return result;
}
}
export const PvpDefenseModel = getModelForClass(PvpDefense);
export interface PvpDefenseType extends Pick<DocumentType<PvpDefense>, keyof PvpDefense>{};