From b1f25dbe58b20392cd2cc41e8a03f3f11f94b60d Mon Sep 17 00:00:00 2001 From: Umberto Sgueglia Date: Thu, 23 Apr 2026 16:48:59 +0200 Subject: [PATCH] fix: organization query Signed-off-by: Umberto Sgueglia --- .../repositories/organizationRepository.ts | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/backend/src/database/repositories/organizationRepository.ts b/backend/src/database/repositories/organizationRepository.ts index 2fbe0ef83a..e626002e81 100644 --- a/backend/src/database/repositories/organizationRepository.ts +++ b/backend/src/database/repositories/organizationRepository.ts @@ -1296,6 +1296,25 @@ class OrganizationRepository { return { lfxMembershipFilter, updatedfilter } } + private static handleSearchFilter(filter: any): { + searchTerm: string | null + updatedFilter: any + } { + if (!filter || typeof filter !== 'object') { + return { searchTerm: null, updatedFilter: filter } + } + + const updatedFilter = { ...filter } + let searchTerm: string | null = null + + if (typeof updatedFilter.search === 'string' && updatedFilter.search.trim()) { + searchTerm = updatedFilter.search.trim() + } + delete updatedFilter.search + + return { searchTerm, updatedFilter } + } + static async findAndCountAll( { countOnly = false, @@ -1428,6 +1447,10 @@ class OrganizationRepository { const withAggregates = include.aggregates + const { searchTerm, updatedFilter: filterWithoutSearch } = + OrganizationRepository.handleSearchFilter(filter) + filter = filterWithoutSearch + const { lfxMembershipFilter, updatedfilter } = OrganizationRepository.handleLfxMembershipFilter(filter) filter = updatedfilter // updated filter without lfxMembershipFilter @@ -1458,13 +1481,19 @@ class OrganizationRepository { segmentId = segment.id } - const params = { + const params: Record = { limit, offset, segmentId, tenantId: options.currentTenant.id, } + let searchWhereClause = '' + if (searchTerm) { + params.searchTerm = `%${searchTerm}%` + searchWhereClause = `AND o."displayName" ILIKE $(searchTerm)` + } + const filterString = RawQueryParser.parseFilters( filter, OrganizationRepository.QUERY_FILTER_COLUMN_MAP, @@ -1498,6 +1527,7 @@ class OrganizationRepository { WHERE 1=1 AND o."tenantId" = $(tenantId) ${lfxMembershipFilterWhereClause} + ${searchWhereClause} AND (${filterString}) ` const countQuery = createQuery('COUNT(*)')