添加数据库类型别名

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 Question {
@prop({ required: true })
@@ -47,23 +47,23 @@ export default class EventRecord extends BaseModel {
public static async getEventRecordByTime(roleId: string, refTime: number, lean=true ) {
let data = await EventRecordModel.find({roleId, refTime}).select('eventCode eventId type quality status battleId point question').lean(lean);
let data: EventRecordType[] = await EventRecordModel.find({roleId, refTime}).select('eventCode eventId type quality status battleId point question').lean(lean);
return data;
}
public static async getEventRecordByCode(roleId: string, eventCode: string, lean=true ) {
let data = await EventRecordModel.findOne({roleId, eventCode}).lean(lean);
let data: EventRecordType = await EventRecordModel.findOne({roleId, eventCode}).lean(lean);
return data;
}
public static async getHostoryEventRecord(roleId: string, lean=true) {
let latest = await EventRecordModel.findOne({roleId}).sort({turn: -1}).lean();
let latest: EventRecordType = await EventRecordModel.findOne({roleId}).sort({turn: -1}).lean();
let {turn = 0} = latest||{};
let result = await EventRecordModel.find({roleId, turn}).lean(lean);
let result: EventRecordType[] = await EventRecordModel.find({roleId, turn}).lean(lean);
return {history: result, turn};
}
public static async saveEventAnswer(eventCode: string, questionId: number, status: number , lean=true ) {
let data = await EventRecordModel.findOneAndUpdate(
let data: EventRecordType = await EventRecordModel.findOneAndUpdate(
{eventCode, 'question.id': questionId}, { $set: {'question.$.status': status} }, {upsert: true, new: true}).lean(lean);
return data;
}
@@ -71,29 +71,31 @@ export default class EventRecord extends BaseModel {
public static async saveEventRecord(eventCode: string, params: {roleId: string, refTime: number, eventId: number, roleName:string, turn?: number, type: number, quality: number, battleId?: number, status: number, point: number, question: Array<any> } , lean=true ) {
let doc = new EventRecordModel();
let update = Object.assign(doc.toJSON(), params, {eventCode});
let data = await EventRecordModel.findOneAndUpdate({eventCode}, { $set: update }, {upsert: true, new: true}).select('eventCode eventId type quality status battleId point question').lean(lean);
let data: EventRecordType = await EventRecordModel.findOneAndUpdate({eventCode}, { $set: update }, {upsert: true, new: true}).select('eventCode eventId type quality status battleId point question').lean(lean);
return data;
}
public static async setBattleCode(roleId: string, battleId: number, refTime: number, battleCode: string , lean=true ) {
let result = await EventRecordModel.findOneAndUpdate({roleId, battleId, refTime}, {$set:{ battleCode }}).sort({turn: 1}).lean(lean);
let result: EventRecordType = await EventRecordModel.findOneAndUpdate({roleId, battleId, refTime}, {$set:{ battleCode }}).sort({turn: 1}).lean(lean);
return result;
}
public static async setBattleStatus(roleId: string, battleId: number, battleCode: string, status: number , lean=true ) {
let result = await EventRecordModel.findOneAndUpdate({roleId, battleId, battleCode}, {$set:{ status }}).lean(lean);
let result: EventRecordType = await EventRecordModel.findOneAndUpdate({roleId, battleId, battleCode}, {$set:{ status }}).lean(lean);
return result;
}
public static async setStatusByCode(roleId: string, eventCode: string, status: number , lean=true ) {
let result = await EventRecordModel.findOneAndUpdate({ roleId, eventCode }, {$set:{ status }}, {new: true, upsert: true}).lean(lean);
let result: EventRecordType = await EventRecordModel.findOneAndUpdate({ roleId, eventCode }, {$set:{ status }}, {new: true, upsert: true}).lean(lean);
return result;
}
public static async deleteAccount(roleId: string, lean = true) {
let result = await EventRecordModel.deleteMany({roleId}).lean(lean);
return result||{};
public static async deleteAccount(roleId: string) {
let result = await EventRecordModel.deleteMany({roleId});
return result;
}
}
export const EventRecordModel = getModelForClass(EventRecord);
export interface EventRecordType extends Pick<DocumentType<EventRecord>, keyof EventRecord>{};