Files
ZYZ/shared/db/ActivityGroup.ts
2021-05-26 17:35:56 +08:00

52 lines
1.9 KiB
TypeScript

import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
/**
* 活动合集
*/
@index({ activityId: 1 })
export default class Activity_Group extends BaseModel {
@prop({ required: true })
groupId: number; // 组Id
@prop({ required: true })
groupName: string; // 组名
@prop({ required: true })
activities: number[]; // 活动Id
@prop({ required: true })
beginTime: Date; // 里面的activity的最早的时间
@prop({ required: true })
endTime: Date; // 里面的activity的最晚的时间
//查询组
public static async findGroupData(groupId: number) {
let result: ActivityGroupModelType = await ActivityGroupModel.findOne({ groupId }).lean(true);
return result;
}
//更新名字
public static async updateGroupName(groupId: number, groupName: string) {
let result: ActivityGroupModelType = await ActivityGroupModel.findOneAndUpdate({ groupId },
{ $set: { groupName } }, { upsert: true, new: true }).lean(true);
return result;
}
//更新询组
public static async updateGroupData(groupId: number, activities: number[], beginTime: Date, endTime: Date) {
let result: ActivityGroupModelType = await ActivityGroupModel.findOneAndUpdate({ groupId },
{ $set: { activities, beginTime, endTime } }, { upsert: true, new: true }).lean(true);
return result;
}
//删除组
public static async deleteGroup(groupId: number) {
let result = await ActivityGroupModel.deleteMany({ groupId });
return result;
}
}
export const ActivityGroupModel = getModelForClass(Activity_Group);
export interface ActivityGroupModelType extends Pick<DocumentType<Activity_Group>, keyof Activity_Group> { }
export type ActivityGroupModelTypeParam = Partial<ActivityGroupModelType>; // 将所有字段变成可选项