Files
ZYZ/shared/db/GMUserGroup.ts
2021-12-01 14:45:06 +08:00

42 lines
1.4 KiB
TypeScript

import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType, ReturnModelType, mongoose } from '@typegoose/typegoose';
/**
* GM账号和用户组关系接口
*/
@index({ uid: 1, serverId: 1, groupId: 1 })
export default class GMUserGroup extends BaseModel {
@prop({ required: true })
uid: number;
@prop({ required: true })
serverId: number;
@prop({ required: true })
groupId: number;
public static async getUserGroupByUid(uid: number, serverId: number, lean = true) {
const user: GMUserGroupType[] = await GMUserGroupModel.find({uid, serverId}).lean(lean);
return user;
}
public static async removeUserGroup(uid: number, serverId: number, groups: Array<number>) {
const user = await GMUserGroupModel.deleteMany({uid, serverId, groupId: {$in: groups}});
return user;
}
public static async addUserGroup(uid: number, serverId: number, groupId: number, lean = true) {
const result: GMUserGroupType = await GMUserGroupModel.findOneAndUpdate({uid, serverId, groupId}, {}, {new:true, upsert:true}).lean(lean);
return result;
}
}
export let GMUserGroupModel: ReturnModelType<typeof GMUserGroup, {}>;
export function loadGMUserGroupModel(connect: mongoose.Connection) {
GMUserGroupModel = getModelForClass(GMUserGroup, {
existingConnection: connect
});
}
export interface GMUserGroupType extends Pick<DocumentType<GMUserGroup>, keyof GMUserGroup>{};