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) { 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 = getModelForClass(GMUserGroup); export function loadGMUserGroupModel(connect: mongoose.Connection) { GMUserGroupModel = getModelForClass(GMUserGroup, { existingConnection: connect }); } export interface GMUserGroupType extends Pick, keyof GMUserGroup>{};