From fcf7fb054e7fa4f5e3fc84fd27e2e45a4f85631a Mon Sep 17 00:00:00 2001 From: viniciusgadea Date: Tue, 16 Dec 2025 09:55:24 -0300 Subject: [PATCH] FIX: Update searchDataAssets to handle owner filtering and convert owner names to IDs --- src/modules/catalog/catalog.service.ts | 46 +++++++++++++++----------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/src/modules/catalog/catalog.service.ts b/src/modules/catalog/catalog.service.ts index 39090b1..c56313e 100644 --- a/src/modules/catalog/catalog.service.ts +++ b/src/modules/catalog/catalog.service.ts @@ -240,38 +240,44 @@ class CatalogService implements OnModuleInit { ) { this.logger.info('CatalogService - searchDataAssets'); - const { search, page, size, sort_by, order, ...filters } = query; + const { search, page, size, sort_by, order, owner, ...filters } = query; // Verificar se filters.owner existe - if (filters.owner !== undefined && filters.owner !== null) { + if (owner !== undefined && owner !== null) { const { users: customer_users } = await this.userService.findAllUsersByCustomerId(customer_id); - const ownerValues = Array.isArray(filters.owner) - ? filters.owner - : (typeof filters.owner === 'string' && filters.owner.includes(',') - ? filters.owner.split(',').map((o: string) => o.trim()) - : [filters.owner]); + let ownerValues: string[]; + if (Array.isArray(owner)) { + ownerValues = owner; + } else if (typeof owner === 'string' && owner.includes(',')) { + ownerValues = owner.split(',').map((o: string) => o.trim()); + } else { + ownerValues = [owner]; + } - // Separar "sem owner" (marcador especial __null__) dos owners normais - const hasEmptyOwner = ownerValues.some(v => v === '__null__'); - const normalOwners = ownerValues.filter(v => v !== '__null__'); + // Separar "sem owner" (marcador especial null) dos owners normais + const hasEmptyOwner = ownerValues.some(v => v === 'null'); + const normalOwners = ownerValues.filter(v => v !== 'null'); - const ownerIds = normalOwners - .map((ownerValue: string) => { - const user = customer_users.find(u => - u.name === ownerValue || u.email === ownerValue || u.id === ownerValue - ); - return user ? user.id : ownerValue; - }) - .filter((id: string) => id); + // Converter nomes de owners para IDs + const ownerIds = normalOwners.map((ownerValue: string) => { + const user = customer_users.find(u => + u.name === ownerValue || u.email === ownerValue || u.id === ownerValue + ); + return user ? user.id : ownerValue; + }); // Se tiver "sem owner", adicionar marcador especial if (hasEmptyOwner) { - ownerIds.push('__null__'); + ownerIds.push('null'); } - filters.owner = ownerIds.length > 0 ? ownerIds : undefined; + // Adicionar ao filters apenas se houver valores + if (ownerIds.length > 0) { + filters.owner = ownerIds; + } + } const { data_assets, total } = await lastValueFrom( this.catalogReadService.GetAllDataAssets(