炼器堂

This commit is contained in:
mamengke01
2021-01-26 16:50:14 +08:00
parent d8cc01f036
commit fb56dd00ec
19 changed files with 338 additions and 60 deletions

View File

@@ -1,18 +1,18 @@
import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
class ScienceTree {
export class ScienceTree {
@prop({ required: true })
id: number;
@prop({ required: true })
time: number;
@prop({ required: true })
assistCount: number;
endTime: number;
@prop({ required: true, default: [], type: String, _id: false})
assistRoleIds: Array<string>;
}
@index({ guildCode: 1 })
export default class GuildRefiner extends BaseModel {
export default class GuildRefine extends BaseModel {
@prop({ required: true })
guildCode: string;
@@ -20,13 +20,27 @@ export default class GuildRefiner extends BaseModel {
scienceTrees: ScienceTree[];
public static async createScienceTree(guildCode: string, scienceTrees: ScienceTree[], lean = true) {
const result = await GuildRefinerModel.findOneAndUpdate({ guildCode }, {$set: {scienceTrees}}, {new: true, upsert: true}).lean(lean);
const result = await GuildRefineModel.findOneAndUpdate({ guildCode }, {$set: {scienceTrees}}, {new: true, upsert: true}).lean(lean);
return result;
}
public static async getRefine(guildCode: string, lean = true) {
const result = await GuildRefineModel.findOne({ guildCode }).lean(lean);
return result;
}
public static async pushRefine(guildCode: string, scienceTree: ScienceTree,lean = true) {
const result = await GuildRefineModel.findOneAndUpdate({ guildCode, 'scienceTrees.$.id':{$ne:scienceTree.id}}, {$push: {scienceTrees: scienceTree}}, { new: true }).lean(lean);
return result;
}
public static async updateRefine(guildCode: string, update: GuildRefineTypeParam, lean = true) {
const result = await GuildRefineModel.findOneAndUpdate({ guildCode}, {$set: update}, { new: true }).lean(lean);
return result;
}
}
export const GuildRefinerModel = getModelForClass(GuildRefiner);
export const GuildRefineModel = getModelForClass(GuildRefine)
export interface GuildRefineType extends Pick<DocumentType<GuildRefine>, keyof GuildRefine> { };
export interface GuildRefinerType extends Pick<DocumentType<GuildRefiner>, keyof GuildRefiner>{}
export type GuildRefineTypeParam = Partial<GuildRefineType>; // 将所有字段变成可选项