@@ -3,27 +3,18 @@ import mongoose from "mongoose";
33import logger from "./logger.js" ;
44
55class TeamsService {
6- async updateTeams ( org : string , teams : Endpoints [ "GET /orgs/{org}/teams" ] [ "response" ] [ "data" ] ) {
7- const Team = mongoose . model ( 'Team' ) ;
6+ async updateTeams (
7+ org : string ,
8+ teams : Endpoints [ "GET /orgs/{org}/teams" ] [ "response" ] [ "data" ]
9+ ) {
10+ const Team = mongoose . model ( "Team" ) ;
811
912 for ( const team of teams ) {
1013 await Team . findOneAndUpdate (
1114 { githubId : team . id } , // search criteria
1215 {
1316 org,
14- team : team . slug ,
15- githubId : team . id ,
16- node_id : team . node_id ,
17- name : team . name ,
18- slug : team . slug ,
19- description : team . description ,
20- privacy : team . privacy || 'unknown' ,
21- notification_setting : team . notification_setting || 'unknown' ,
22- permission : team . permission ,
23- url : team . url ,
24- html_url : team . html_url ,
25- members_url : team . members_url ,
26- repositories_url : team . repositories_url
17+ ...team ,
2718 } ,
2819 { upsert : true , new : true } // create if doesn't exist, return updated doc
2920 ) ;
@@ -46,37 +37,40 @@ class TeamsService {
4637 { githubId : - 1 } ,
4738 {
4839 org,
49- name : ' No Team' ,
50- slug : ' no-team' ,
51- description : ' No team assigned' ,
52- node_id : '' ,
53- permission : '' ,
54- url : '' ,
55- html_url : '' ,
56- members_url : '' ,
57- repositories_url : '' ,
58- githubId : - 1
40+ name : " No Team" ,
41+ slug : " no-team" ,
42+ description : " No team assigned" ,
43+ node_id : "" ,
44+ permission : "" ,
45+ url : "" ,
46+ html_url : "" ,
47+ members_url : "" ,
48+ repositories_url : "" ,
49+ githubId : - 1 ,
5950 } ,
6051 { upsert : true , new : true }
6152 ) ;
6253 }
6354
64- async updateMembers ( org : string , members : Endpoints [ "GET /orgs/{org}/teams/{team_slug}/members" ] [ "response" ] [ "data" ] ) {
65- const Members = mongoose . model ( 'Member' ) ;
55+ async updateMembers (
56+ org : string ,
57+ members : Endpoints [ "GET /orgs/{org}/teams/{team_slug}/members" ] [ "response" ] [ "data" ]
58+ ) {
59+ const Members = mongoose . model ( "Member" ) ;
6660 const bulkOps = members . map ( ( member ) => ( {
6761 updateOne : {
6862 filter : { org, id : member . id } ,
6963 update : { $set : member } ,
70- upsert : true
71- }
64+ upsert : true ,
65+ } ,
7266 } ) ) ;
7367 await Members . bulkWrite ( bulkOps , { ordered : false } ) ;
7468 }
7569
7670 async addMemberToTeam ( teamId : number , memberId : number ) {
77- const Team = mongoose . model ( ' Team' ) ;
78- const Member = mongoose . model ( ' Member' ) ;
79- const TeamMember = mongoose . model ( ' TeamMember' ) ;
71+ const Team = mongoose . model ( " Team" ) ;
72+ const Member = mongoose . model ( " Member" ) ;
73+ const TeamMember = mongoose . model ( " TeamMember" ) ;
8074
8175 // Find Team and Member documents to get their MongoDB _ids
8276 const team = await Team . findOne ( { githubId : teamId } ) ;
@@ -96,17 +90,20 @@ class TeamsService {
9690 }
9791
9892 async deleteMemberFromTeam ( teamId : number , memberId : number ) {
99- const TeamMember = mongoose . model ( 'TeamMember' ) ;
100- const deleted = await TeamMember . deleteOne ( { team : teamId , member : memberId } ) ;
93+ const TeamMember = mongoose . model ( "TeamMember" ) ;
94+ const deleted = await TeamMember . deleteOne ( {
95+ team : teamId ,
96+ member : memberId ,
97+ } ) ;
10198 if ( deleted . deletedCount === 0 ) {
10299 throw new Error ( `Member ${ memberId } is not part of team ${ teamId } ` ) ;
103100 }
104101 return true ;
105102 }
106103
107104 async deleteMember ( memberId : number ) {
108- const Member = mongoose . model ( ' Member' ) ;
109- const TeamMember = mongoose . model ( ' TeamMember' ) ;
105+ const Member = mongoose . model ( " Member" ) ;
106+ const TeamMember = mongoose . model ( " TeamMember" ) ;
110107
111108 await TeamMember . deleteMany ( { member : memberId } ) ;
112109 const deleted = await Member . deleteOne ( { id : memberId } ) ;
@@ -117,8 +114,8 @@ class TeamsService {
117114 }
118115
119116 async deleteTeam ( teamId : number ) {
120- const Team = mongoose . model ( ' Team' ) ;
121- const TeamMember = mongoose . model ( ' TeamMember' ) ;
117+ const Team = mongoose . model ( " Team" ) ;
118+ const TeamMember = mongoose . model ( " TeamMember" ) ;
122119
123120 await TeamMember . deleteMany ( { team : teamId } ) ;
124121 const deleted = await Team . deleteOne ( { githubId : teamId } ) ;
@@ -129,59 +126,59 @@ class TeamsService {
129126 }
130127
131128 async getLastUpdatedAt ( org ?: string ) : Promise < Date > {
132- const Team = mongoose . model ( ' Member' ) ;
129+ const Team = mongoose . model ( " Member" ) ;
133130 const team = await Team . findOne ( org ? { org } : { } ) . sort ( { updatedAt : - 1 } ) ;
134131 return team ?. updatedAt || new Date ( 0 ) ;
135132 }
136133
137134 async getMemberByLogin ( login : string ) {
138- const Member = mongoose . model ( ' Member' ) ;
135+ const Member = mongoose . model ( " Member" ) ;
139136 return await Member . findOne ( { login } )
140- . select ( ' login name url avatar_url' )
137+ . select ( " login name url avatar_url" )
141138 . exec ( ) ;
142139 }
143140
144141 async getAllMembers ( org ?: string ) {
145- const Member = mongoose . model ( ' Member' ) ;
142+ const Member = mongoose . model ( " Member" ) ;
146143 try {
147144 return await Member . find ( {
148- ...org ? { org } : { }
145+ ...( org ? { org } : { } ) ,
149146 } )
150- . select ( ' login org name url avatar_url' )
147+ . select ( " login org name url avatar_url" )
151148 . populate ( {
152- path : ' seat' ,
153- select : ' -_id -__v' ,
154- options : { lean : true }
149+ path : " seat" ,
150+ select : " -_id -__v" ,
151+ options : { lean : true } ,
155152 } )
156- . sort ( { login : ' asc' } )
153+ . sort ( { login : " asc" } )
157154 . exec ( ) ;
158155 } catch ( error ) {
159- logger . error ( ' Failed to get all members:' , error ) ;
156+ logger . error ( " Failed to get all members:" , error ) ;
160157 throw error ;
161158 }
162159 }
163160
164161 async getTeams ( org ?: string ) {
165- const Team = mongoose . model ( ' Team' ) ;
166- const Member = mongoose . model ( ' Member' ) ;
162+ const Team = mongoose . model ( " Team" ) ;
163+ const Member = mongoose . model ( " Member" ) ;
167164 return await Team . find ( {
168- ...org ? { org } : { }
165+ ...( org ? { org } : { } ) ,
169166 } )
170167 . populate ( {
171- path : ' members' ,
172- select : ' login avatar_url' ,
173- model : Member
168+ path : " members" ,
169+ select : " login avatar_url" ,
170+ model : Member ,
174171 } )
175172 . populate ( {
176- path : ' children' ,
177- select : ' name org slug description html_url' ,
173+ path : " children" ,
174+ select : " name org slug description html_url" ,
178175 populate : {
179- path : ' members' ,
180- select : ' login avatar_url' ,
181- model : Member
182- }
176+ path : " members" ,
177+ select : " login avatar_url" ,
178+ model : Member ,
179+ } ,
183180 } )
184- . sort ( { name : ' asc' , ' members.login' : ' asc' } )
181+ . sort ( { name : " asc" , " members.login" : " asc" } )
185182 . exec ( ) ;
186183 }
187184}
0 commit comments