@@ -207,64 +207,48 @@ export class MemberSyncService {
207207
208208 public async syncOrganizationMembers (
209209 organizationId : string ,
210- opts : { syncFrom : Date | null } = { syncFrom : null } ,
211- ) : Promise < void > {
212- this . log . debug ( { organizationId } , 'Syncing all organization members!' )
213- const batchSize = 500
214- let docCount = 0
215- const memberCount = 0
216-
217- const now = new Date ( )
218-
219- const loadNextPage = async ( lastId ?: string ) : Promise < string [ ] > => {
220- this . log . info ( 'Loading next page of organization members!' , { organizationId, lastId } )
221- const memberIds = await logExecutionTimeV2 (
222- ( ) =>
223- this . memberRepo . getOrganizationMembersForSync (
224- organizationId ,
225- batchSize ,
226- lastId ,
227- opts . syncFrom ,
228- ) ,
229- this . log ,
230- `getOrganizationMembersForSync` ,
231- )
232-
233- if ( memberIds . length === 0 ) {
234- return [ ]
235- }
210+ opts : {
211+ lastId ?: string
212+ batchSize ?: number
213+ syncFrom ?: Date | null
214+ } = { } ,
215+ ) : Promise < { lastId : string | null ; membersSynced : number } > {
216+ const batchSize = opts . batchSize ?? 500
217+
218+ const memberIds = await logExecutionTimeV2 (
219+ ( ) =>
220+ this . memberRepo . getOrganizationMembersForSync (
221+ organizationId ,
222+ batchSize ,
223+ opts . lastId ,
224+ opts . syncFrom ?? undefined ,
225+ ) ,
226+ this . log ,
227+ 'getOrganizationMembersForSync' ,
228+ )
236229
237- return memberIds
230+ if ( memberIds . length === 0 ) {
231+ return { lastId : null , membersSynced : 0 }
238232 }
239233
240- let memberIds : string [ ] = await loadNextPage ( )
241-
242- while ( memberIds . length > 0 ) {
243- for ( let i = 0 ; i < memberIds . length ; i ++ ) {
244- const memberId = memberIds [ i ]
245- const { documentsIndexed } = await logExecutionTimeV2 (
246- ( ) => this . syncMembers ( memberId ) ,
247- this . log ,
248- `syncMembers (${ i } /${ memberIds . length } )` ,
249- )
250-
251- docCount += documentsIndexed
252- }
253-
254- const diffInSeconds = ( new Date ( ) . getTime ( ) - now . getTime ( ) ) / 1000
255- this . log . info (
256- { organizationId } ,
257- `Synced ${ memberCount } members! Speed: ${ Math . round (
258- memberCount / diffInSeconds ,
259- ) } members/second!`,
234+ let docCount = 0
235+ for ( let i = 0 ; i < memberIds . length ; i ++ ) {
236+ const { documentsIndexed } = await logExecutionTimeV2 (
237+ ( ) => this . syncMembers ( memberIds [ i ] ) ,
238+ this . log ,
239+ `syncMembers (${ i + 1 } /${ memberIds . length } )` ,
260240 )
261- memberIds = await loadNextPage ( memberIds [ memberIds . length - 1 ] )
241+ docCount += documentsIndexed
262242 }
263243
244+ const lastId = memberIds [ memberIds . length - 1 ]
245+
264246 this . log . info (
265- { organizationId } ,
266- `Synced total of ${ memberCount } members with ${ docCount } documents! ` ,
247+ { organizationId, membersSynced : memberIds . length , docCount , lastId } ,
248+ `Synced page of ${ memberIds . length } members ( ${ docCount } docs indexed) ` ,
267249 )
250+
251+ return { lastId, membersSynced : memberIds . length }
268252 }
269253
270254 public async syncMembers ( memberId : string ) : Promise < IMemberSyncResult > {
0 commit comments