66 RawQueryParser ,
77 generateUUIDv1 ,
88 getProperDisplayName ,
9+ groupBy ,
910} from '@crowd/common'
1011import { formatSql , getDbInstance , prepareForModification } from '@crowd/database'
1112import { getServiceLogger } from '@crowd/logging'
@@ -20,6 +21,7 @@ import {
2021} from '@crowd/types'
2122
2223import { LfxMembership , findManyLfxMemberships } from '../lfx_memberships'
24+ import { findMaintainerRoles } from '../maintainers'
2325import {
2426 IDbMemberCreateData ,
2527 IDbMemberUpdateData ,
@@ -498,8 +500,7 @@ export async function queryMembersAdvanced(
498500 // ])
499501 const firstBatchStartTime = Date . now ( )
500502
501- // const [memberOrganizations, identities, memberSegments, maintainerRoles] = await Promise.all([
502- const [ memberOrganizations , identities , memberSegments ] = await Promise . all ( [
503+ const [ memberOrganizations , identities , memberSegments , maintainerRoles ] = await Promise . all ( [
503504 include . memberOrganizations
504505 ? ( async ( ) => {
505506 const start = Date . now ( )
@@ -524,14 +525,14 @@ export async function queryMembersAdvanced(
524525 return result
525526 } ) ( )
526527 : Promise . resolve ( [ ] ) ,
527- // include.maintainers
528- // ? (async () => {
529- // const start = Date.now()
530- // const result = await findMaintainerRoles(qx, memberIds)
531- // log.info(`[PERF] findMaintainerRoles took: ${Date.now() - start}ms`)
532- // return result
533- // })()
534- // : Promise.resolve([]),
528+ include . maintainers
529+ ? ( async ( ) => {
530+ const start = Date . now ( )
531+ const result = await findMaintainerRoles ( qx , memberIds )
532+ log . info ( `[PERF] findMaintainerRoles took: ${ Date . now ( ) - start } ms` )
533+ return result
534+ } ) ( )
535+ : Promise . resolve ( [ ] ) ,
535536 ] )
536537 const firstBatchDuration = Date . now ( ) - firstBatchStartTime
537538 log . info ( `[PERF] First parallel batch took: ${ firstBatchDuration } ms` )
@@ -629,8 +630,7 @@ export async function queryMembersAdvanced(
629630
630631 // Second parallel batch - fetch related data
631632 const secondBatchStartTime = Date . now ( )
632- // const [orgExtra, segmentsInfo, maintainerSegmentsInfo] = await Promise.all([
633- const [ orgExtra , segmentsInfo ] = await Promise . all ( [
633+ const [ orgExtra , segmentsInfo , maintainerSegmentsInfo ] = await Promise . all ( [
634634 include . memberOrganizations
635635 ? ( async ( ) => {
636636 const start = Date . now ( )
@@ -647,17 +647,17 @@ export async function queryMembersAdvanced(
647647 return result
648648 } ) ( )
649649 : Promise . resolve ( [ ] ) ,
650- // include.maintainers && maintainerRoles.length > 0
651- // ? (async () => {
652- // const start = Date.now()
653- // const segmentIds = uniq(maintainerRoles.map((m) => m.segmentId))
654- // const result = await fetchManySegments(qx, segmentIds)
655- // log.info(
656- // `[PERF] fetchManySegments for maintainers (${segmentIds.length} segments) took: ${Date.now() - start}ms`,
657- // )
658- // return result
659- // })()
660- // : Promise.resolve([]),
650+ include . maintainers && maintainerRoles . length > 0
651+ ? ( async ( ) => {
652+ const start = Date . now ( )
653+ const segmentIds = uniq ( maintainerRoles . map ( ( m ) => m . segmentId ) )
654+ const result = await fetchManySegments ( qx , segmentIds )
655+ log . info (
656+ `[PERF] fetchManySegments for maintainers (${ segmentIds . length } segments) took: ${ Date . now ( ) - start } ms` ,
657+ )
658+ return result
659+ } ) ( )
660+ : Promise . resolve ( [ ] ) ,
661661 ] )
662662 const secondBatchDuration = Date . now ( ) - secondBatchStartTime
663663 log . info ( `[PERF] Second parallel batch took: ${ secondBatchDuration } ms` )
@@ -724,20 +724,20 @@ export async function queryMembersAdvanced(
724724 log . info ( `[PERF] Segments processing took: ${ Date . now ( ) - segmentProcessingStart } ms` )
725725 }
726726
727- // if (include.maintainers) {
728- // const maintainerProcessingStart = Date.now()
729- // const groupedMaintainers = groupBy(maintainerRoles, (m) => m.memberId)
730- // rows.forEach((member) => {
731- // member.maintainerRoles = (groupedMaintainers.get(member.id) || []).map((role) => {
732- // const segmentInfo = maintainerSegmentsInfo.find((s) => s.id === role.segmentId)
733- // return {
734- // ...role,
735- // segmentName: segmentInfo?.name,
736- // }
737- // })
738- // })
739- // log.info(`[PERF] Maintainer roles processing took: ${Date.now() - maintainerProcessingStart}ms`)
740- // }
727+ if ( include . maintainers ) {
728+ const maintainerProcessingStart = Date . now ( )
729+ const groupedMaintainers = groupBy ( maintainerRoles , ( m ) => m . memberId )
730+ rows . forEach ( ( member ) => {
731+ member . maintainerRoles = ( groupedMaintainers . get ( member . id ) || [ ] ) . map ( ( role ) => {
732+ const segmentInfo = maintainerSegmentsInfo . find ( ( s ) => s . id === role . segmentId )
733+ return {
734+ ...role ,
735+ segmentName : segmentInfo ?. name ,
736+ }
737+ } )
738+ } )
739+ log . info ( `[PERF] Maintainer roles processing took: ${ Date . now ( ) - maintainerProcessingStart } ms` )
740+ }
741741
742742 if ( include . identities ) {
743743 const identityProcessingStart = Date . now ( )
0 commit comments