@@ -139,27 +139,28 @@ export class SchoolExternalToolService {
139139
140140 public async addAndActivateToolForAllSchools ( toolId : EntityId ) : Promise < void > {
141141 const allSchoolIds = await this . schoolService . getAllSchoolIds ( ) ;
142- const existingSchoolExternalTools = await this . schoolExternalToolRepo . findByExternalToolId ( toolId ) ;
143142
144- existingSchoolExternalTools . forEach ( ( tool ) => tool . activate ( ) ) ;
145- const updatePromises = existingSchoolExternalTools . map ( ( tool ) => this . schoolExternalToolRepo . save ( tool ) ) ;
146- await Promise . all ( updatePromises ) ;
143+ const existingDeactivatedSchoolExternalTools = await this . schoolExternalToolRepo . find ( {
144+ toolId,
145+ isDeactivated : true ,
146+ } ) ;
147+ existingDeactivatedSchoolExternalTools . forEach ( ( tool ) => tool . activate ( ) ) ;
148+ await this . schoolExternalToolRepo . saveMany ( existingDeactivatedSchoolExternalTools ) ;
147149
148- const schoolIdsWhereExisting = existingSchoolExternalTools . map ( ( tool ) => tool . schoolId ) ;
149- const schoolIdsWhereNotExisting = allSchoolIds . filter ( ( schoolId ) => ! schoolIdsWhereExisting . includes ( schoolId ) ) ;
150- const createPromises = schoolIdsWhereNotExisting . map ( ( schoolId ) => this . createSchoolExternalTool ( toolId , schoolId ) ) ;
151- await Promise . all ( createPromises ) ;
150+ const existingSchoolExternalTools = await this . schoolExternalToolRepo . findByExternalToolId ( toolId ) ;
151+ const schoolIdsWhereExisting = new Set ( existingSchoolExternalTools . map ( ( tool ) => tool . schoolId ) ) ;
152+ const schoolIdsWhereNotExisting = allSchoolIds . filter ( ( schoolId ) => ! schoolIdsWhereExisting . has ( schoolId ) ) ;
153+ const toolsToAdd = schoolIdsWhereNotExisting . map ( ( schoolId ) => this . createSchoolExternalTool ( toolId , schoolId ) ) ;
154+ await this . schoolExternalToolRepo . saveMany ( toolsToAdd ) ;
152155 }
153156
154- private createSchoolExternalTool ( toolId : EntityId , schoolId : EntityId ) : Promise < SchoolExternalTool > {
155- const schoolExternalTool = new SchoolExternalTool ( {
157+ private createSchoolExternalTool ( toolId : EntityId , schoolId : EntityId ) : SchoolExternalTool {
158+ return new SchoolExternalTool ( {
156159 id : new ObjectId ( ) . toHexString ( ) ,
157160 toolId,
158161 schoolId,
159162 parameters : [ ] ,
160163 isDeactivated : false ,
161164 } ) ;
162-
163- return this . schoolExternalToolRepo . save ( schoolExternalTool ) ;
164165 }
165166}
0 commit comments