From 918c3d7416cbb331d38868b2e5aeb2c2b7d9d3a4 Mon Sep 17 00:00:00 2001 From: viniciusgadea Date: Mon, 15 Dec 2025 09:08:08 -0300 Subject: [PATCH 1/3] FIX: Enhance searchDataAssets to convert owner names to IDs and log the conversion --- docsfera.json | 8 ++++++++ src/modules/catalog/catalog.service.ts | 27 ++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/docsfera.json b/docsfera.json index 4d80f69..4f1c426 100644 --- a/docsfera.json +++ b/docsfera.json @@ -4483,6 +4483,14 @@ "schema": { "type": "string" } + }, + { + "name": "asset_type", + "required": true, + "in": "query", + "schema": { + "type": "string" + } } ], "responses": { diff --git a/src/modules/catalog/catalog.service.ts b/src/modules/catalog/catalog.service.ts index 5929849..9d99f7d 100644 --- a/src/modules/catalog/catalog.service.ts +++ b/src/modules/catalog/catalog.service.ts @@ -243,6 +243,33 @@ class CatalogService implements OnModuleInit { const { search, page, size, sort_by, order, ...filters } = query; + if (filters.owner) { + 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]); + + const ownerIds = ownerValues + .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); + + filters.owner = ownerIds; + + this.logger.info('Converted owner names to IDs:', { + original: ownerValues, + converted: ownerIds + }); + } + const { data_assets, total } = await lastValueFrom( this.catalogReadService.GetAllDataAssets( { From 288aaeabc0799262f16664fab42d1d6f0a9a0e98 Mon Sep 17 00:00:00 2001 From: viniciusgadea Date: Mon, 15 Dec 2025 12:00:50 -0300 Subject: [PATCH 2/3] FIX: Enhance filter handling in BuildDataAssetsFilterTerms to support empty owner condition --- src/modules/catalog/catalog.service.ts | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/modules/catalog/catalog.service.ts b/src/modules/catalog/catalog.service.ts index 9d99f7d..39090b1 100644 --- a/src/modules/catalog/catalog.service.ts +++ b/src/modules/catalog/catalog.service.ts @@ -240,10 +240,10 @@ class CatalogService implements OnModuleInit { ) { this.logger.info('CatalogService - searchDataAssets'); - const { search, page, size, sort_by, order, ...filters } = query; - - if (filters.owner) { + + // Verificar se filters.owner existe + if (filters.owner !== undefined && filters.owner !== null) { const { users: customer_users } = await this.userService.findAllUsersByCustomerId(customer_id); @@ -253,7 +253,11 @@ class CatalogService implements OnModuleInit { ? filters.owner.split(',').map((o: string) => o.trim()) : [filters.owner]); - const ownerIds = ownerValues + // 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 @@ -262,13 +266,12 @@ class CatalogService implements OnModuleInit { }) .filter((id: string) => id); - filters.owner = ownerIds; - - this.logger.info('Converted owner names to IDs:', { - original: ownerValues, - converted: ownerIds - }); - } + // Se tiver "sem owner", adicionar marcador especial + if (hasEmptyOwner) { + ownerIds.push('__null__'); + } + + filters.owner = ownerIds.length > 0 ? ownerIds : undefined; const { data_assets, total } = await lastValueFrom( this.catalogReadService.GetAllDataAssets( From fcf7fb054e7fa4f5e3fc84fd27e2e45a4f85631a Mon Sep 17 00:00:00 2001 From: viniciusgadea Date: Tue, 16 Dec 2025 09:55:24 -0300 Subject: [PATCH 3/3] 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(