11import type { Types } from "mongoose" ;
22import { Base , IBase } from "./Base" ;
3- import { Flags } from "../types/Flags" ;
43import { AtLeast } from "@/types" ;
54
6- export interface IGroup < Kind extends string = "Group" , F = object >
7- extends IBase < Kind > {
8- createdBy : Types . ObjectId ;
9- members : Types . ObjectId [ ] ;
5+ export interface IGroup <
6+ Kind extends string = "Group" ,
7+ F extends object = object ,
8+ > extends IBase < Kind > {
9+ members : IGroupMember [ ] ;
1010 name : string ;
11- teams : Types . ObjectId [ ] ;
12- flags : Flags & F ;
11+ flags : F ;
12+ }
13+
14+ export interface IGroupMember {
15+ type : GroupMemberEnum ;
16+ _id : Types . ObjectId ;
17+ }
18+
19+ export enum GroupMemberEnum {
20+ "USER" = "USER" ,
21+ "TEAM" = "TEAM" ,
1322}
1423
1524export class Group extends Base {
16- members : Types . ObjectId [ ] ;
25+ members : IGroupMember [ ] ;
1726 name : string ;
18- teams : Types . ObjectId [ ] ;
19- flags : Flags & object ;
27+ flags : object ;
2028
2129 constructor ( {
2230 name,
2331 members,
24- teams,
2532 flags,
2633 _id,
2734 __v,
2835 createdAt,
2936 updatedAt,
3037 createdBy,
3138 updatedBy,
32- } : AtLeast < IGroup , "createdBy" | "name" | "members" | "teams" | " flags"> ) {
39+ } : AtLeast < IGroup , "createdBy" | "name" | "members" | "flags" > ) {
3340 super ( { _id, __v, createdAt, updatedAt, createdBy, updatedBy } ) ;
3441 this . name = name ;
3542 this . members = members ;
36- this . teams = teams ;
3743 this . flags = flags ;
3844 }
3945
@@ -43,7 +49,6 @@ export class Group extends Base {
4349 ...json ,
4450 members : this . members ,
4551 name : this . name ,
46- teams : this . teams ,
4752 flags : this . flags ,
4853 } ;
4954 }
0 commit comments