From 81d93ff103c7604b8003153e350726708faed951 Mon Sep 17 00:00:00 2001 From: Gabriel Rosa Date: Mon, 5 Dec 2022 13:22:23 -0300 Subject: [PATCH] FEAT: embed data asset --- docsfera.json | 14 ++++++++++++++ package-lock.json | 14 +++++++------- package.json | 2 +- src/modules/catalog/catalog.controller.ts | 3 +++ src/modules/catalog/catalog.service.ts | 7 +------ src/modules/catalog/dtos/index.ts | 7 ++++++- src/utils/ErrorBuilder.ts | 8 ++++++++ src/utils/errorCodes.ts | 4 ++++ 8 files changed, 44 insertions(+), 15 deletions(-) diff --git a/docsfera.json b/docsfera.json index e4ffcaa..2fe5b31 100644 --- a/docsfera.json +++ b/docsfera.json @@ -5640,6 +5640,17 @@ "data_asset" ] }, + "EmbedObject": { + "type": "object", + "properties": { + "url": { + "type": "string" + } + }, + "required": [ + "url" + ] + }, "ICreateDataAsset": { "type": "object", "properties": { @@ -5657,6 +5668,9 @@ }, "location": { "type": "string" + }, + "embed": { + "$ref": "#/components/schemas/EmbedObject" } }, "required": [ diff --git a/package-lock.json b/package-lock.json index 4d5be85..f610f51 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "dependencies": { "@aws-sdk/client-secrets-manager": "^3.112.0", "@dadosfera/dadosfera-logs": "^1.0.0-beta.4", - "@dadosfera/protospack-v2": "3.21.0", + "@dadosfera/protospack-v2": "3.22.0-beta.2", "@grpc/grpc-js": "^1.6.7", "@grpc/proto-loader": "^0.6.13", "@nestjs/common": "^8.4.7", @@ -1727,9 +1727,9 @@ } }, "node_modules/@dadosfera/protospack-v2": { - "version": "3.21.0", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.21.0.tgz", - "integrity": "sha512-gHIRLSto813lagxqcphO4/xc82g/QkCZRslRhj5tJK4V69f/ScviBHB4CCRBRW5Md2Lql6zWuTV5R0uADFIiZA==", + "version": "3.22.0-beta.2", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.22.0-beta.2.tgz", + "integrity": "sha512-zZ9CIcY2LzJVmIgt69AuGIC5GhSqbHQXdSEMA0XYeiMnPyN2ZkfVdCp32b4kwZME1zSpBBJV2wJVvboDa5ZKbQ==", "dependencies": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", @@ -12330,9 +12330,9 @@ } }, "@dadosfera/protospack-v2": { - "version": "3.21.0", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.21.0.tgz", - "integrity": "sha512-gHIRLSto813lagxqcphO4/xc82g/QkCZRslRhj5tJK4V69f/ScviBHB4CCRBRW5Md2Lql6zWuTV5R0uADFIiZA==", + "version": "3.22.0-beta.2", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.22.0-beta.2.tgz", + "integrity": "sha512-zZ9CIcY2LzJVmIgt69AuGIC5GhSqbHQXdSEMA0XYeiMnPyN2ZkfVdCp32b4kwZME1zSpBBJV2wJVvboDa5ZKbQ==", "requires": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", diff --git a/package.json b/package.json index f1df8c1..445e5ac 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "dependencies": { "@aws-sdk/client-secrets-manager": "^3.112.0", "@dadosfera/dadosfera-logs": "^1.0.0-beta.4", - "@dadosfera/protospack-v2": "3.21.0", + "@dadosfera/protospack-v2": "3.22.0-beta.2", "@grpc/grpc-js": "^1.6.7", "@grpc/proto-loader": "^0.6.13", "@nestjs/common": "^8.4.7", diff --git a/src/modules/catalog/catalog.controller.ts b/src/modules/catalog/catalog.controller.ts index ff6d047..6f7675f 100644 --- a/src/modules/catalog/catalog.controller.ts +++ b/src/modules/catalog/catalog.controller.ts @@ -11,6 +11,7 @@ import { Put, Query, UnsupportedMediaTypeException, + UseFilters, } from '@nestjs/common'; import { ApiTags } from '@nestjs/swagger'; import { @@ -33,9 +34,11 @@ import { IPreviewResponse, IUpdateDataRequest, } from './dtos'; +import { GrpcToHttpExceptionFilter } from 'src/error/grpc-to-http-exception.filter'; @ApiTags('Catalog') @Controller('catalog') +@UseFilters(new GrpcToHttpExceptionFilter()) @Authenticated() export class CatalogController { logger: DadosferaLogger; diff --git a/src/modules/catalog/catalog.service.ts b/src/modules/catalog/catalog.service.ts index 87c395f..c4c8032 100644 --- a/src/modules/catalog/catalog.service.ts +++ b/src/modules/catalog/catalog.service.ts @@ -63,12 +63,7 @@ class CatalogService implements OnModuleInit { return lastValueFrom( this.catalogWriteService.CreateDataAsset(data, metadata), - ).catch((err) => { - throw new HttpException( - err.details, - err.code === 6 ? HttpStatus.CONFLICT : 404, - ); - }); + ); } async managePermissions(data: Messages.ManagePermissionRequest, metadata) { diff --git a/src/modules/catalog/dtos/index.ts b/src/modules/catalog/dtos/index.ts index 533a559..b894f02 100644 --- a/src/modules/catalog/dtos/index.ts +++ b/src/modules/catalog/dtos/index.ts @@ -128,7 +128,10 @@ export class IUpdateDataRequest { @ApiProperty() tags: string[]; } - +export class EmbedObject { + @ApiProperty() + url: string; +} export class ICreateDataAsset implements CreateDataAssetRequest { @ApiProperty() display_name: string; @@ -140,6 +143,8 @@ export class ICreateDataAsset implements CreateDataAssetRequest { external_url: string; @ApiProperty() location: string; + @ApiPropertyOptional() + embed: EmbedObject; } export class IPreview { diff --git a/src/utils/ErrorBuilder.ts b/src/utils/ErrorBuilder.ts index 16567e1..faf2b7c 100644 --- a/src/utils/ErrorBuilder.ts +++ b/src/utils/ErrorBuilder.ts @@ -292,6 +292,14 @@ export function EnrichErrorCode(code: string) { message: 'Caso o erro persista, entre em contato com o suporte', code, }; + case ErrorCodes.CATALOG.DATA_ASSET_NOT_FOUND: + return { + statusCode: HttpStatus.NOT_FOUND, + error: 'Não encontramos o ativo solicitado', + message: + 'Tente realizar a ação novamente. Caso o erro persista, entre em contato com o suporte', + code, + }; case ErrorCodes.INTERNAL: case ErrorCodes.UNKNOWN: default: diff --git a/src/utils/errorCodes.ts b/src/utils/errorCodes.ts index 087ddba..19a9d22 100644 --- a/src/utils/errorCodes.ts +++ b/src/utils/errorCodes.ts @@ -67,6 +67,9 @@ const CONNECTION = { const TRANSFORMATION = { NOT_FOUND: 'TRANSFORMATION.NOT_FOUND', }; +const CATALOG = { + DATA_ASSET_NOT_FOUND: 'CATALOG.DATA_ASSET_NOT_FOUND', +}; const ErrorCodes = { UNKNOWN: 'UNKNOWN', RATE_LIMIT: 'RATE_LIMIT', @@ -82,6 +85,7 @@ const ErrorCodes = { INPUT, TRANSFORMATION, CONNECTION, + CATALOG, }; export default ErrorCodes;