@@ -207,7 +207,7 @@ interface BuildQueryArgs {
207207 includeMemberOrgs : boolean
208208 searchConfig : SearchConfig
209209 filterString : string
210- orderBy ?: string // e.g. "activityCount_DESC", "score_ASC", "joinedAt"
210+ orderBy ?: string
211211 orderDirection ?: OrderDirection
212212 limit ?: number
213213 offset ?: number
@@ -233,9 +233,7 @@ const parseOrderBy = (
233233
234234 const dir = ( rawDir || '' ) . toUpperCase ( )
235235 const direction : OrderDirection =
236- dir === 'ASC' || dir === 'DESC'
237- ? ( dir as OrderDirection )
238- : fallbackDirection
236+ dir === 'ASC' || dir === 'DESC' ? ( dir as OrderDirection ) : fallbackDirection
239237
240238 return { field, direction }
241239}
@@ -245,9 +243,7 @@ const getOrderClause = (
245243 direction : OrderDirection ,
246244 withAggregates : boolean ,
247245) : string => {
248- const defaultOrder = withAggregates
249- ? 'msa."activityCount" DESC'
250- : 'm."joinedAt" DESC'
246+ const defaultOrder = withAggregates ? 'msa."activityCount" DESC' : 'm."joinedAt" DESC'
251247
252248 if ( ! parsedField ) return defaultOrder
253249
@@ -283,13 +279,10 @@ const buildQuery = ({
283279 // - sort is by activityCount (or default)
284280 // - filter does NOT reference mo. or me. (those aliases do not exist in top_members)
285281 const useActivityCountOptimized =
286- withAggregates &&
287- ! filterHasMo &&
288- ! filterHasMe &&
289- ( ! sortField || sortField === 'activityCount' )
282+ withAggregates && ! filterHasMo && ! filterHasMe && ( ! sortField || sortField === 'activityCount' )
290283
284+ log . info ( `buildQuery: useActivityCountOptimized=${ useActivityCountOptimized } ` )
291285 if ( useActivityCountOptimized ) {
292- log . info ( `Using optimized activityCount path` )
293286 const ctes : string [ ] = [ ]
294287
295288 // For optimized path:
@@ -308,7 +301,8 @@ const buildQuery = ({
308301 ? `\n ${ searchConfig . join } ` // INNER JOIN member_search ms ON ms."memberId" = m.id
309302 : ''
310303
311- ctes . push ( `
304+ ctes . push (
305+ `
312306 top_members AS (
313307 SELECT
314308 msa."memberId"
@@ -322,7 +316,8 @@ const buildQuery = ({
322316 msa."activityCount" ${ direction } NULLS LAST
323317 LIMIT ${ limit } OFFSET ${ offset }
324318 )
325- ` . trim ( ) )
319+ ` . trim ( ) ,
320+ )
326321
327322 const withClause = `WITH ${ ctes . join ( ',\n' ) } `
328323
@@ -347,24 +342,17 @@ const buildQuery = ({
347342 msa."activityCount" ${ direction } NULLS LAST
348343 ` . trim ( )
349344 }
350- else {
351- log . info ( `Not using optimized activityCount path` )
352- }
353345
354346 // Fallback path: any case that is not safe/eligible for optimization.
355- // Here we MUST align joins with what filterString references.
356- const baseCtes = [
357- needsMemberOrgs ? buildMemberOrgsCTE ( true ) : '' ,
358- searchConfig . cte ,
359- ] . filter ( Boolean )
347+ const baseCtes = [ needsMemberOrgs ? buildMemberOrgsCTE ( true ) : '' , searchConfig . cte ] . filter (
348+ Boolean ,
349+ )
360350
361351 const joins = [
362352 withAggregates
363353 ? `INNER JOIN "memberSegmentsAgg" msa ON msa."memberId" = m.id AND msa."segmentId" = $(segmentId)`
364354 : '' ,
365- needsMemberOrgs
366- ? `LEFT JOIN member_orgs mo ON mo."memberId" = m.id`
367- : '' ,
355+ needsMemberOrgs ? `LEFT JOIN member_orgs mo ON mo."memberId" = m.id` : '' ,
368356 `LEFT JOIN "memberEnrichments" me ON me."memberId" = m.id` ,
369357 searchConfig . join ,
370358 ] . filter ( Boolean )
@@ -399,18 +387,13 @@ const buildCountQuery = ({
399387 const filterHasMo = filterString . includes ( 'mo.' )
400388 const needsMemberOrgs = includeMemberOrgs || filterHasMo
401389
402- const ctes = [
403- needsMemberOrgs ? buildMemberOrgsCTE ( true ) : '' ,
404- searchConfig . cte ,
405- ] . filter ( Boolean )
390+ const ctes = [ needsMemberOrgs ? buildMemberOrgsCTE ( true ) : '' , searchConfig . cte ] . filter ( Boolean )
406391
407392 const joins = [
408393 withAggregates
409394 ? `INNER JOIN "memberSegmentsAgg" msa ON msa."memberId" = m.id AND msa."segmentId" = $(segmentId)`
410395 : '' ,
411- needsMemberOrgs
412- ? `LEFT JOIN member_orgs mo ON mo."memberId" = m.id`
413- : '' ,
396+ needsMemberOrgs ? `LEFT JOIN member_orgs mo ON mo."memberId" = m.id` : '' ,
414397 searchConfig . join ,
415398 ] . filter ( Boolean )
416399
@@ -544,7 +527,6 @@ export async function queryMembersAdvanced(
544527 attributeSettings = [ ] as IDbMemberAttributeSetting [ ] ,
545528 } ,
546529) : Promise < PageData < IDbMemberData > > {
547-
548530 const startTime = Date . now ( )
549531
550532 const withAggregates = ! ! segmentId
@@ -590,11 +572,11 @@ export async function queryMembersAdvanced(
590572
591573 // Build queries
592574 const countQuery = buildCountQuery ( {
593- withAggregates,
594- searchConfig,
595- filterString,
596- includeMemberOrgs : include . memberOrganizations ,
597- } )
575+ withAggregates,
576+ searchConfig,
577+ filterString,
578+ includeMemberOrgs : include . memberOrganizations ,
579+ } )
598580
599581 if ( countOnly ) {
600582 const result = await qx . selectOne ( countQuery , params )
@@ -627,15 +609,15 @@ export async function queryMembersAdvanced(
627609 log . info ( `[PERF] Field preparation took: ${ Date . now ( ) - fieldsStartTime } ms` )
628610
629611 const mainQuery = buildQuery ( {
630- fields : preparedFields ,
631- withAggregates , // true when you need memberSegmentsAgg
632- includeMemberOrgs : include . memberOrganizations ,
633- searchConfig,
634- filterString,
635- orderBy , // e.g. 'activityCount' | 'score' | 'joinedAt'
636- limit,
637- offset,
638- } )
612+ fields : preparedFields ,
613+ withAggregates , // true when you need memberSegmentsAgg
614+ includeMemberOrgs : include . memberOrganizations ,
615+ searchConfig,
616+ filterString,
617+ orderBy , // e.g. 'activityCount' | 'score' | 'joinedAt'
618+ limit,
619+ offset,
620+ } )
639621
640622 // log.info(`main query: ${formatSql(mainQuery, params)}`)
641623 // log.info(`count query: ${formatSql(countQuery, params)}`)
0 commit comments