diff --git a/backend/src/database/repositories/memberRepository.ts b/backend/src/database/repositories/memberRepository.ts index 887491b23..9b2b45bae 100644 --- a/backend/src/database/repositories/memberRepository.ts +++ b/backend/src/database/repositories/memberRepository.ts @@ -14,6 +14,7 @@ import { SegmentData, SegmentProjectGroupNestedData, SegmentProjectNestedData, + SegmentType, SyncStatus, } from '@crowd/types' import lodash, { chunk, uniq } from 'lodash' @@ -1558,6 +1559,7 @@ class MemberRepository { lfxMemberships: true, identities: false, segments: true, + onlySubProjects: true, ...include, }, }, @@ -2233,11 +2235,13 @@ class MemberRepository { include = { identities: true, segments: false, + onlySubProjects: false, lfxMemberships: false, memberOrganizations: false, } as { identities?: boolean segments?: boolean + onlySubProjects?: boolean lfxMemberships?: boolean memberOrganizations?: boolean }, @@ -2494,13 +2498,22 @@ class MemberRepository { const segmentsInfo = await fetchManySegments(qx, segmentIds) rows.forEach((member) => { - member.segments = ( - memberSegments.find((i) => i.memberId === member.id)?.segments || [] - ).map((segment) => ({ - id: segment.segmentId, - name: segmentsInfo.find((s) => s.id === segment.segmentId)?.name, - activityCount: segment.activityCount, - })) + member.segments = (memberSegments.find((i) => i.memberId === member.id)?.segments || []) + .map((segment) => { + const segmentInfo = segmentsInfo.find((s) => s.id === segment.segmentId) + + // include only subprojects if flag is set + if (include.onlySubProjects && segmentInfo?.type !== SegmentType.SUB_PROJECT) { + return null + } + + return { + id: segment.segmentId, + name: segmentInfo?.name, + activityCount: segment.activityCount, + } + }) + .filter(Boolean) }) }