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