From 3bc37db891c4a8a8b03d36702682dbcf91cc2554 Mon Sep 17 00:00:00 2001 From: Victor Radael Date: Fri, 11 Nov 2022 10:12:20 -0300 Subject: [PATCH 01/11] FIX: Event Tracker --- docsfera.json | 4 ++-- src/modules/connector/client.config.ts | 8 ++++---- src/modules/connector/connector.controller.ts | 16 ++++++++-------- src/modules/mixpanel/mixpanel.controller.ts | 2 ++ 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/docsfera.json b/docsfera.json index 80c74d6..9fbf75e 100644 --- a/docsfera.json +++ b/docsfera.json @@ -3298,9 +3298,9 @@ } }, "info": { - "title": "Maestro - fix/pipeline-details-bug", + "title": "Maestro - main", "description": "Documentation for Maestro gateway", - "version": "10.11.2022 - 10:7", + "version": "10.11.2022 - 14:19", "contact": {} }, "tags": [], diff --git a/src/modules/connector/client.config.ts b/src/modules/connector/client.config.ts index 711f265..3d19b3d 100644 --- a/src/modules/connector/client.config.ts +++ b/src/modules/connector/client.config.ts @@ -16,10 +16,10 @@ export class ConnectorClientConfiguration { ConnectorManager.ProtoPackages.WritePackage, ConnectorManager.ProtoPackages.ReadPackage, ], - credentials: - process.env.LOCAL_ENV || process.env.ENV === 'local' - ? undefined - : credentials.createSsl(), + // credentials: + // process.env.LOCAL_ENV || process.env.ENV === 'local' + // ? undefined + // : credentials.createSsl(), protoPath: [ ConnectorManager.ProtoPaths.WriteFilePath, ConnectorManager.ProtoPaths.ReadFilePath, diff --git a/src/modules/connector/connector.controller.ts b/src/modules/connector/connector.controller.ts index 89efd1c..baa6c95 100644 --- a/src/modules/connector/connector.controller.ts +++ b/src/modules/connector/connector.controller.ts @@ -53,7 +53,7 @@ export class ConnectorController { @UploadedFile() file, @Body() body: CreateConnectorDto, ) { - this.logger.info('/upload - Upload Connector Route'); + this.logger.info('/uploadConnector - Upload Connector Route'); const response = await this.connectorClientService.uploadConnector({ file, @@ -68,7 +68,7 @@ export class ConnectorController { @ApiConsumes('multipart/form-data') @UseInterceptors(FilesInterceptor('files')) async uploadFile(@UploadedFiles() files) { - this.logger.info('/upload - Upload Connector Route'); + this.logger.info('/uploadFile - Upload Connector Route'); const promises = files.map(async (file) => { return await this.connectorClientService.uploadFile({ file, @@ -85,7 +85,7 @@ export class ConnectorController { @ApiConsumes('multipart/form-data') @UseInterceptors(FileInterceptor('file')) async uploadConnectorsFile(@UploadedFile() file: Express.Multer.File) { - this.logger.info(`/upload`, 'Upload Connector Route'); + this.logger.info(`/uploadConnectorsFile`); return await this.connectorClientService.uploadConnectorsFile(file); } @@ -177,7 +177,7 @@ export class ConnectorController { @Param('plugin') plugin: string, @Query('version') version: string, ) { - this.logger.info('/upload - Upload Connector Route'); + this.logger.info('/getConnectorDetails - Upload Connector Route'); if (!language) language = 'en-us'; const pluginId = `${plugin}-${version}`; @@ -200,7 +200,7 @@ export class ConnectorController { @Param('plugin') plugin: string, @Body() body: UpdateDto, ) { - this.logger.info('/upload - Upload Connector Route'); + this.logger.info('/updateConnector - Upload Connector Route'); const changes = body; @@ -221,7 +221,7 @@ export class ConnectorController { @Param('plugin') plugin: string, @Body() body: AddTagDto, ) { - this.logger.info('/upload - Upload Connector Route'); + this.logger.info('/addTagOnConnector - Upload Connector Route'); const { tags } = body; @@ -248,7 +248,7 @@ export class ConnectorController { @Param('plugin') plugin: string, @Body() body: RemoveTagDto, ) { - this.logger.info('/upload - Upload Connector Route'); + this.logger.info('/removeTagOnConnector - Upload Connector Route'); const { tags } = body; const remove = tags; @@ -276,7 +276,7 @@ export class ConnectorController { @Param('plugin') plugin: string, @Body() { version }: DeleteConnectorDto, ) { - this.logger.info('/upload - Upload Connector Route'); + this.logger.info('/deleteConnector - Upload Connector Route'); const response: any = await this.connectorClientService.deleteConnector( plugin, diff --git a/src/modules/mixpanel/mixpanel.controller.ts b/src/modules/mixpanel/mixpanel.controller.ts index e7005ee..bf88224 100644 --- a/src/modules/mixpanel/mixpanel.controller.ts +++ b/src/modules/mixpanel/mixpanel.controller.ts @@ -1,7 +1,9 @@ import { Body, Controller, Inject, Param, Post } from '@nestjs/common'; import { init } from 'mixpanel'; +import { Authenticated } from 'src/authentication/authentication.decorator'; import { RequestUser, User } from 'src/authentication/user.decorator'; +@Authenticated() @Controller('trackEvent') export class MixpanelController { constructor( From 8906c73d8421c240303d598a53c664c378d81fae Mon Sep 17 00:00:00 2001 From: Victor Radael Date: Fri, 11 Nov 2022 10:13:24 -0300 Subject: [PATCH 02/11] Revert "FIX: Event Tracker" This reverts commit 3bc37db891c4a8a8b03d36702682dbcf91cc2554. --- docsfera.json | 4 ++-- src/modules/connector/client.config.ts | 8 ++++---- src/modules/connector/connector.controller.ts | 16 ++++++++-------- src/modules/mixpanel/mixpanel.controller.ts | 2 -- 4 files changed, 14 insertions(+), 16 deletions(-) diff --git a/docsfera.json b/docsfera.json index 9fbf75e..80c74d6 100644 --- a/docsfera.json +++ b/docsfera.json @@ -3298,9 +3298,9 @@ } }, "info": { - "title": "Maestro - main", + "title": "Maestro - fix/pipeline-details-bug", "description": "Documentation for Maestro gateway", - "version": "10.11.2022 - 14:19", + "version": "10.11.2022 - 10:7", "contact": {} }, "tags": [], diff --git a/src/modules/connector/client.config.ts b/src/modules/connector/client.config.ts index 3d19b3d..711f265 100644 --- a/src/modules/connector/client.config.ts +++ b/src/modules/connector/client.config.ts @@ -16,10 +16,10 @@ export class ConnectorClientConfiguration { ConnectorManager.ProtoPackages.WritePackage, ConnectorManager.ProtoPackages.ReadPackage, ], - // credentials: - // process.env.LOCAL_ENV || process.env.ENV === 'local' - // ? undefined - // : credentials.createSsl(), + credentials: + process.env.LOCAL_ENV || process.env.ENV === 'local' + ? undefined + : credentials.createSsl(), protoPath: [ ConnectorManager.ProtoPaths.WriteFilePath, ConnectorManager.ProtoPaths.ReadFilePath, diff --git a/src/modules/connector/connector.controller.ts b/src/modules/connector/connector.controller.ts index baa6c95..89efd1c 100644 --- a/src/modules/connector/connector.controller.ts +++ b/src/modules/connector/connector.controller.ts @@ -53,7 +53,7 @@ export class ConnectorController { @UploadedFile() file, @Body() body: CreateConnectorDto, ) { - this.logger.info('/uploadConnector - Upload Connector Route'); + this.logger.info('/upload - Upload Connector Route'); const response = await this.connectorClientService.uploadConnector({ file, @@ -68,7 +68,7 @@ export class ConnectorController { @ApiConsumes('multipart/form-data') @UseInterceptors(FilesInterceptor('files')) async uploadFile(@UploadedFiles() files) { - this.logger.info('/uploadFile - Upload Connector Route'); + this.logger.info('/upload - Upload Connector Route'); const promises = files.map(async (file) => { return await this.connectorClientService.uploadFile({ file, @@ -85,7 +85,7 @@ export class ConnectorController { @ApiConsumes('multipart/form-data') @UseInterceptors(FileInterceptor('file')) async uploadConnectorsFile(@UploadedFile() file: Express.Multer.File) { - this.logger.info(`/uploadConnectorsFile`); + this.logger.info(`/upload`, 'Upload Connector Route'); return await this.connectorClientService.uploadConnectorsFile(file); } @@ -177,7 +177,7 @@ export class ConnectorController { @Param('plugin') plugin: string, @Query('version') version: string, ) { - this.logger.info('/getConnectorDetails - Upload Connector Route'); + this.logger.info('/upload - Upload Connector Route'); if (!language) language = 'en-us'; const pluginId = `${plugin}-${version}`; @@ -200,7 +200,7 @@ export class ConnectorController { @Param('plugin') plugin: string, @Body() body: UpdateDto, ) { - this.logger.info('/updateConnector - Upload Connector Route'); + this.logger.info('/upload - Upload Connector Route'); const changes = body; @@ -221,7 +221,7 @@ export class ConnectorController { @Param('plugin') plugin: string, @Body() body: AddTagDto, ) { - this.logger.info('/addTagOnConnector - Upload Connector Route'); + this.logger.info('/upload - Upload Connector Route'); const { tags } = body; @@ -248,7 +248,7 @@ export class ConnectorController { @Param('plugin') plugin: string, @Body() body: RemoveTagDto, ) { - this.logger.info('/removeTagOnConnector - Upload Connector Route'); + this.logger.info('/upload - Upload Connector Route'); const { tags } = body; const remove = tags; @@ -276,7 +276,7 @@ export class ConnectorController { @Param('plugin') plugin: string, @Body() { version }: DeleteConnectorDto, ) { - this.logger.info('/deleteConnector - Upload Connector Route'); + this.logger.info('/upload - Upload Connector Route'); const response: any = await this.connectorClientService.deleteConnector( plugin, diff --git a/src/modules/mixpanel/mixpanel.controller.ts b/src/modules/mixpanel/mixpanel.controller.ts index bf88224..e7005ee 100644 --- a/src/modules/mixpanel/mixpanel.controller.ts +++ b/src/modules/mixpanel/mixpanel.controller.ts @@ -1,9 +1,7 @@ import { Body, Controller, Inject, Param, Post } from '@nestjs/common'; import { init } from 'mixpanel'; -import { Authenticated } from 'src/authentication/authentication.decorator'; import { RequestUser, User } from 'src/authentication/user.decorator'; -@Authenticated() @Controller('trackEvent') export class MixpanelController { constructor( From e00b6481d09d7fe13e1ff935010a5deb18c84aec Mon Sep 17 00:00:00 2001 From: Victor Radael Date: Fri, 11 Nov 2022 10:15:49 -0300 Subject: [PATCH 03/11] FIX: Tracker --- src/modules/mixpanel/mixpanel.controller.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/modules/mixpanel/mixpanel.controller.ts b/src/modules/mixpanel/mixpanel.controller.ts index e7005ee..bf88224 100644 --- a/src/modules/mixpanel/mixpanel.controller.ts +++ b/src/modules/mixpanel/mixpanel.controller.ts @@ -1,7 +1,9 @@ import { Body, Controller, Inject, Param, Post } from '@nestjs/common'; import { init } from 'mixpanel'; +import { Authenticated } from 'src/authentication/authentication.decorator'; import { RequestUser, User } from 'src/authentication/user.decorator'; +@Authenticated() @Controller('trackEvent') export class MixpanelController { constructor( From 7c228c5c53eb69a9891f7dcbbeffa76c69a5a5d1 Mon Sep 17 00:00:00 2001 From: Gabriel Rosa Date: Fri, 11 Nov 2022 12:26:14 -0300 Subject: [PATCH 04/11] FIX: set new module permissions public --- docsfera.json | 4 +- .../authentication.guard.spec.ts | 12 +++-- src/authentication/permissions.enum.ts | 51 +++++++++++-------- src/authentication/user.decorator.spec.ts | 2 +- 4 files changed, 40 insertions(+), 29 deletions(-) diff --git a/docsfera.json b/docsfera.json index e08286e..34c7c05 100644 --- a/docsfera.json +++ b/docsfera.json @@ -3298,9 +3298,9 @@ } }, "info": { - "title": "Maestro - fix/modules-permissions", + "title": "Maestro - main", "description": "Documentation for Maestro gateway", - "version": "10.11.2022 - 14:43", + "version": "11.11.2022 - 12:24", "contact": {} }, "tags": [], diff --git a/src/authentication/authentication.guard.spec.ts b/src/authentication/authentication.guard.spec.ts index 8419aa6..e621a13 100644 --- a/src/authentication/authentication.guard.spec.ts +++ b/src/authentication/authentication.guard.spec.ts @@ -44,7 +44,7 @@ class NoClassAuthController { @Get('has-all-permissions') @RequireAllPermissions( PERMISSIONS_GROUPS.ZENDESK.permissions.OPEN, - PERMISSIONS_GROUPS.METABASE.permissions.OPEN, + PERMISSIONS_GROUPS.METABASE.permissions.METABASE, ) async hasAllPermissions(@Body() body) { return { body }; @@ -53,7 +53,7 @@ class NoClassAuthController { @Get('has-some-permission') @RequireSomePermission( PERMISSIONS_GROUPS.ZENDESK.permissions.OPEN, - PERMISSIONS_GROUPS.METABASE.permissions.OPEN, + PERMISSIONS_GROUPS.METABASE.permissions.METABASE, ) async hasSomePermission(@Body() body) { return { body }; @@ -62,7 +62,7 @@ class NoClassAuthController { @Controller('class-auth-condition') @AuthenticateCondition((req) => req.get('x-on-class') === 'ok') -@RequireSomePermission(PERMISSIONS_GROUPS.METABASE.permissions.OPEN) +@RequireSomePermission(PERMISSIONS_GROUPS.METABASE.permissions.METABASE) class ClassAuthConditionController { @Get('body') async getBody(@Body() body) { @@ -444,13 +444,15 @@ describe('authentication.guard', () => { NoClassAuthTest(tokenZ, ['zendesk']); ClassAuthConditionTest(tokenZ, ['zendesk']); - const tokenM = CreateToken([PERMISSIONS_GROUPS.METABASE.permissions.OPEN]); + const tokenM = CreateToken([ + PERMISSIONS_GROUPS.METABASE.permissions.METABASE, + ]); NoClassAuthTest(tokenM, ['metabase']); ClassAuthConditionTest(tokenM, ['metabase']); const tokenZM = CreateToken([ PERMISSIONS_GROUPS.ZENDESK.permissions.OPEN, - PERMISSIONS_GROUPS.METABASE.permissions.OPEN, + PERMISSIONS_GROUPS.METABASE.permissions.METABASE, ]); NoClassAuthTest(tokenZM, ['zendesk', 'metabase']); ClassAuthConditionTest(tokenZM, ['zendesk', 'metabase']); diff --git a/src/authentication/permissions.enum.ts b/src/authentication/permissions.enum.ts index a4a95c8..0390f51 100644 --- a/src/authentication/permissions.enum.ts +++ b/src/authentication/permissions.enum.ts @@ -436,7 +436,7 @@ export const PERMISSIONS_GROUPS = { 'es-es': 'Analizar | Visualización', }, permissions: { - OPEN: { + METABASE: { seqid: 11, claim: 'GET /metabase', usage: PermissionUsages.PUBLIC, @@ -446,6 +446,16 @@ export const PERMISSIONS_GROUPS = { 'es-es': 'Acceso Metabase', }, }, + INTELLIGENCE: { + seqid: 31, + claim: 'intelligence:open', + usage: PermissionUsages.PUBLIC, + name: { + 'pt-br': 'Acessar Módulo de Inteligência', + 'en-us': 'Access Intelligence Module', + 'es-s': 'Acceder Módulo de Inteligencia', + }, + }, }, }, @@ -456,16 +466,6 @@ export const PERMISSIONS_GROUPS = { 'es-es': 'Módulos de la Dadosfera', }, permissions: { - INTELLIGENCE: { - seqid: 31, - claim: 'intelligence:open', - usage: PermissionUsages.INTERNAL, - name: { - 'pt-br': 'Acessar Módulo de Inteligência', - 'en-us': 'Access Intelligence Module', - 'es-s': 'Acceder Módulo de Inteligencia', - }, - }, APP_BUILDER: { seqid: 32, claim: 'app-builder:open', @@ -486,16 +486,6 @@ export const PERMISSIONS_GROUPS = { 'es-es': 'Acceder Machine Learning', }, }, - PROCESS: { - seqid: 43, - claim: 'process:open', - usage: PermissionUsages.INTERNAL, - name: { - 'pt-br': 'Acessar Módulo de Processamento', - 'en-us': 'Access Processing Module', - 'es-es': 'Acceder Módulo de Tramitación', - }, - }, }, }, USERS: { @@ -517,6 +507,25 @@ export const PERMISSIONS_GROUPS = { }, }, }, + PROCESS: { + title: { + 'pt-br': 'Usuários', + 'en-us': 'Users', + 'es-es': 'Usuarios', + }, + permissions: { + TRANSFORMATION: { + seqid: 43, + claim: 'process:open', + usage: PermissionUsages.PUBLIC, + name: { + 'pt-br': 'Acessar Módulo de Transformação', + 'en-us': 'Access Transformation Module', + 'es-es': 'Acceder Módulo de transformación', + }, + }, + }, + }, DADOSFERA: { title: { 'pt-br': 'Usuários', diff --git a/src/authentication/user.decorator.spec.ts b/src/authentication/user.decorator.spec.ts index 366d9da..bfccf5a 100644 --- a/src/authentication/user.decorator.spec.ts +++ b/src/authentication/user.decorator.spec.ts @@ -49,7 +49,7 @@ describe('user.decorator', () => { const fakeUserPayload = { user_id: 'd50d33c7-6c2b-463c-861f-e21667e7c125', username: 'super.admin', - permissions: [PERMISSIONS_GROUPS.METABASE.permissions.OPEN].map( + permissions: [PERMISSIONS_GROUPS.METABASE.permissions.METABASE].map( ({ seqid }) => seqid, ), customer_id: '9d18e8ae-24b9-41a3-9e8f-a25ce57555b11', From 94282718ad4a065a2e1803c1d9827fcfc82180ba Mon Sep 17 00:00:00 2001 From: Gabriel Rosa Date: Fri, 11 Nov 2022 12:27:57 -0300 Subject: [PATCH 05/11] Changed permission group name --- src/authentication/authentication.guard.spec.ts | 12 +++++------- src/authentication/permissions.enum.ts | 2 +- src/authentication/user.decorator.spec.ts | 2 +- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/authentication/authentication.guard.spec.ts b/src/authentication/authentication.guard.spec.ts index e621a13..8edac59 100644 --- a/src/authentication/authentication.guard.spec.ts +++ b/src/authentication/authentication.guard.spec.ts @@ -44,7 +44,7 @@ class NoClassAuthController { @Get('has-all-permissions') @RequireAllPermissions( PERMISSIONS_GROUPS.ZENDESK.permissions.OPEN, - PERMISSIONS_GROUPS.METABASE.permissions.METABASE, + PERMISSIONS_GROUPS.ANALYZE.permissions.METABASE, ) async hasAllPermissions(@Body() body) { return { body }; @@ -53,7 +53,7 @@ class NoClassAuthController { @Get('has-some-permission') @RequireSomePermission( PERMISSIONS_GROUPS.ZENDESK.permissions.OPEN, - PERMISSIONS_GROUPS.METABASE.permissions.METABASE, + PERMISSIONS_GROUPS.ANALYZE.permissions.METABASE, ) async hasSomePermission(@Body() body) { return { body }; @@ -62,7 +62,7 @@ class NoClassAuthController { @Controller('class-auth-condition') @AuthenticateCondition((req) => req.get('x-on-class') === 'ok') -@RequireSomePermission(PERMISSIONS_GROUPS.METABASE.permissions.METABASE) +@RequireSomePermission(PERMISSIONS_GROUPS.ANALYZE.permissions.METABASE) class ClassAuthConditionController { @Get('body') async getBody(@Body() body) { @@ -444,15 +444,13 @@ describe('authentication.guard', () => { NoClassAuthTest(tokenZ, ['zendesk']); ClassAuthConditionTest(tokenZ, ['zendesk']); - const tokenM = CreateToken([ - PERMISSIONS_GROUPS.METABASE.permissions.METABASE, - ]); + const tokenM = CreateToken([PERMISSIONS_GROUPS.ANALYZE.permissions.METABASE]); NoClassAuthTest(tokenM, ['metabase']); ClassAuthConditionTest(tokenM, ['metabase']); const tokenZM = CreateToken([ PERMISSIONS_GROUPS.ZENDESK.permissions.OPEN, - PERMISSIONS_GROUPS.METABASE.permissions.METABASE, + PERMISSIONS_GROUPS.ANALYZE.permissions.METABASE, ]); NoClassAuthTest(tokenZM, ['zendesk', 'metabase']); ClassAuthConditionTest(tokenZM, ['zendesk', 'metabase']); diff --git a/src/authentication/permissions.enum.ts b/src/authentication/permissions.enum.ts index 0390f51..3d0a9c0 100644 --- a/src/authentication/permissions.enum.ts +++ b/src/authentication/permissions.enum.ts @@ -429,7 +429,7 @@ export const PERMISSIONS_GROUPS = { }, }, - METABASE: { + ANALYZE: { title: { 'pt-br': 'Analisar | Visualização', 'en-us': 'Analyze | Visualization', diff --git a/src/authentication/user.decorator.spec.ts b/src/authentication/user.decorator.spec.ts index bfccf5a..c1a041a 100644 --- a/src/authentication/user.decorator.spec.ts +++ b/src/authentication/user.decorator.spec.ts @@ -49,7 +49,7 @@ describe('user.decorator', () => { const fakeUserPayload = { user_id: 'd50d33c7-6c2b-463c-861f-e21667e7c125', username: 'super.admin', - permissions: [PERMISSIONS_GROUPS.METABASE.permissions.METABASE].map( + permissions: [PERMISSIONS_GROUPS.ANALYZE.permissions.METABASE].map( ({ seqid }) => seqid, ), customer_id: '9d18e8ae-24b9-41a3-9e8f-a25ce57555b11', From ac7dc4905ec579fd34fa1fa587b9c84be144f262 Mon Sep 17 00:00:00 2001 From: Gabriel Rosa Date: Fri, 11 Nov 2022 12:35:04 -0300 Subject: [PATCH 06/11] FIX: changed PROCESS permisison group title --- src/authentication/permissions.enum.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/authentication/permissions.enum.ts b/src/authentication/permissions.enum.ts index 3d0a9c0..92a1eb3 100644 --- a/src/authentication/permissions.enum.ts +++ b/src/authentication/permissions.enum.ts @@ -509,9 +509,9 @@ export const PERMISSIONS_GROUPS = { }, PROCESS: { title: { - 'pt-br': 'Usuários', - 'en-us': 'Users', - 'es-es': 'Usuarios', + 'pt-br': 'Processar', + 'en-us': 'Process', + 'es-es': 'Procesar', }, permissions: { TRANSFORMATION: { From 14c686cff459d0bd7db10226a8e06ded5d2d7dea Mon Sep 17 00:00:00 2001 From: Gabriel Rosa Date: Mon, 14 Nov 2022 15:40:38 -0300 Subject: [PATCH 07/11] FIX: renamed catalog create permission - Catalog controller using permission decorator on every route --- docsfera.json | 2 +- src/authentication/permissions.enum.ts | 8 +-- src/modules/catalog/catalog.controller.ts | 81 +++++++++++++++-------- 3 files changed, 58 insertions(+), 33 deletions(-) diff --git a/docsfera.json b/docsfera.json index 34c7c05..bb26801 100644 --- a/docsfera.json +++ b/docsfera.json @@ -3300,7 +3300,7 @@ "info": { "title": "Maestro - main", "description": "Documentation for Maestro gateway", - "version": "11.11.2022 - 12:24", + "version": "14.11.2022 - 15:37", "contact": {} }, "tags": [], diff --git a/src/authentication/permissions.enum.ts b/src/authentication/permissions.enum.ts index 92a1eb3..6682fb7 100644 --- a/src/authentication/permissions.enum.ts +++ b/src/authentication/permissions.enum.ts @@ -297,12 +297,12 @@ export const PERMISSIONS_GROUPS = { }, CREATE: { seqid: 19, - claim: 'POST /catalog', + claim: 'catalog:create', usage: PermissionUsages.INTERNAL, name: { - 'pt-br': 'Criar atributos no catálogo', - 'en-us': 'Create attributes', - 'es-es': 'Crear atributos', + 'pt-br': 'Criar Ativos', + 'en-us': 'Create Assets', + 'es-es': 'Crear Activos', }, }, UPDATE: { diff --git a/src/modules/catalog/catalog.controller.ts b/src/modules/catalog/catalog.controller.ts index e580993..ff6d047 100644 --- a/src/modules/catalog/catalog.controller.ts +++ b/src/modules/catalog/catalog.controller.ts @@ -14,8 +14,8 @@ import { } from '@nestjs/common'; import { ApiTags } from '@nestjs/swagger'; import { - AuthenticateCondition, Authenticated, + RequireSomePermission, } from '../../authentication/authentication.decorator'; import { PERMISSIONS_GROUPS } from '../../authentication/permissions.enum'; import { CatalogService } from './catalog.service'; @@ -34,36 +34,9 @@ import { IUpdateDataRequest, } from './dtos'; -const catalogPermissions = PERMISSIONS_GROUPS.CATALOG.permissions; @ApiTags('Catalog') @Controller('catalog') @Authenticated() -@AuthenticateCondition((req, user: RequestUser) => { - if (user.permissions.includes(catalogPermissions.DATA_MANAGER.seqid)) - return true; - - if (req.path.includes('/manage-permissions')) return true; - let action: keyof typeof catalogPermissions; - - switch (req.method) { - case 'POST': - case 'PUT': - action = 'UPDATE'; - break; - - case 'DELETE': - if (req.path.includes('/comment')) action = 'UPDATE'; - else action = req.method; - break; - - default: - action = req.method as 'GET'; - } - - return user.permissions.includes( - PERMISSIONS_GROUPS.CATALOG.permissions[action].seqid, - ); -}) export class CatalogController { logger: DadosferaLogger; constructor( @@ -75,6 +48,10 @@ export class CatalogController { } @Get() + @RequireSomePermission( + PERMISSIONS_GROUPS.CATALOG.permissions.GET, + PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, + ) async catalogAll( @User() user: RequestUser, @Query() query, @@ -110,6 +87,10 @@ export class CatalogController { } @Get('tags') + @RequireSomePermission( + PERMISSIONS_GROUPS.CATALOG.permissions.GET, + PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, + ) async findAllTags(@Body() body) { this.logger.info(`/catalog - ON FIND ALL TAGS ROUTE`, { user: body.info.user_id, @@ -129,6 +110,10 @@ export class CatalogController { } @Get('data-asset/:id') + @RequireSomePermission( + PERMISSIONS_GROUPS.CATALOG.permissions.GET, + PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, + ) async getDataAsset( @User() user: RequestUser, @Headers() headers, @@ -183,6 +168,10 @@ export class CatalogController { } @Get('data-asset/rls/:id') + @RequireSomePermission( + PERMISSIONS_GROUPS.CATALOG.permissions.GET, + PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, + ) async getDataAssetRls( @User() user: RequestUser, @Headers() headers, @@ -237,6 +226,10 @@ export class CatalogController { } @Get('data-asset/:id/columns-metadata') + @RequireSomePermission( + PERMISSIONS_GROUPS.CATALOG.permissions.GET, + PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, + ) async getDataAssetColumnsMetadata( @User() user: RequestUser, @Headers('Dadosfera-Lang') language, @@ -273,6 +266,10 @@ export class CatalogController { } @Get('data-asset/:id/preview') + @RequireSomePermission( + PERMISSIONS_GROUPS.CATALOG.permissions.GET, + PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, + ) async getDataAssetPreview( @User() user: RequestUser, @Headers('Dadosfera-lang') language, @@ -308,6 +305,10 @@ export class CatalogController { } @Get('data-asset/:id/docs') + @RequireSomePermission( + PERMISSIONS_GROUPS.CATALOG.permissions.GET, + PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, + ) async getDataAssetDocs( @User() user: RequestUser, @Headers('Dadosfera-Lang') language, @@ -343,6 +344,10 @@ export class CatalogController { } @Put('data-asset/:id') + @RequireSomePermission( + PERMISSIONS_GROUPS.CATALOG.permissions.UPDATE, + PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, + ) async updateDataAsset( @User() user: RequestUser, @Headers('Dadosfera-Lang') language, @@ -372,6 +377,10 @@ export class CatalogController { } @Post('data-asset/:id/docs') + @RequireSomePermission( + PERMISSIONS_GROUPS.CATALOG.permissions.UPDATE, + PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, + ) async manageDataAssetDocs( @User() user: RequestUser, @Headers() headers, @@ -440,6 +449,10 @@ export class CatalogController { } @Post() + @RequireSomePermission( + PERMISSIONS_GROUPS.CATALOG.permissions.CREATE, + PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, + ) async createDataAsset( @User() user: RequestUser, @Body() body: ICreateDataAsset, @@ -460,6 +473,10 @@ export class CatalogController { } @Post('data-asset/:id/comment') + @RequireSomePermission( + PERMISSIONS_GROUPS.CATALOG.permissions.UPDATE, + PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, + ) async commentOnDataAsset( @Param('id') id: string, @User() user: RequestUser, @@ -482,6 +499,10 @@ export class CatalogController { } @Delete('data-asset/:id') + @RequireSomePermission( + PERMISSIONS_GROUPS.CATALOG.permissions.DELETE, + PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, + ) async deleteDataAsset( @Param('id') data_asset_id: string, @User() user: RequestUser, @@ -504,6 +525,10 @@ export class CatalogController { } @Delete('data-asset/:id/comment') + @RequireSomePermission( + PERMISSIONS_GROUPS.CATALOG.permissions.UPDATE, + PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, + ) async deleteComment( @Param('id') id: string, @User() user: RequestUser, From 4bf9a5831ae3d9290573bd56b305ae347180f364 Mon Sep 17 00:00:00 2001 From: Gabriel Rosa Date: Mon, 14 Nov 2022 16:15:57 -0300 Subject: [PATCH 08/11] FIX: create data asset permission public --- docsfera.json | 4 ++-- src/authentication/permissions.enum.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docsfera.json b/docsfera.json index bb26801..faa111a 100644 --- a/docsfera.json +++ b/docsfera.json @@ -3298,9 +3298,9 @@ } }, "info": { - "title": "Maestro - main", + "title": "Maestro - catalog-permissions", "description": "Documentation for Maestro gateway", - "version": "14.11.2022 - 15:37", + "version": "14.11.2022 - 16:15", "contact": {} }, "tags": [], diff --git a/src/authentication/permissions.enum.ts b/src/authentication/permissions.enum.ts index 6682fb7..aa94d20 100644 --- a/src/authentication/permissions.enum.ts +++ b/src/authentication/permissions.enum.ts @@ -298,7 +298,7 @@ export const PERMISSIONS_GROUPS = { CREATE: { seqid: 19, claim: 'catalog:create', - usage: PermissionUsages.INTERNAL, + usage: PermissionUsages.PUBLIC, name: { 'pt-br': 'Criar Ativos', 'en-us': 'Create Assets', From 3e3268cb261ad3ae9b12e79214f1245f72602056 Mon Sep 17 00:00:00 2001 From: Gabriel Rosa Date: Wed, 16 Nov 2022 10:37:21 -0300 Subject: [PATCH 09/11] FIX: New getAvailableEntities payload --- docsfera.json | 500 ++---------------------- package-lock.json | 14 +- package.json | 2 +- src/modules/inputs/dtos/input.model.ts | 166 +------- src/modules/inputs/inputs.controller.ts | 47 +-- src/modules/inputs/inputs.service.ts | 48 +-- 6 files changed, 57 insertions(+), 720 deletions(-) diff --git a/docsfera.json b/docsfera.json index faa111a..f3e27da 100644 --- a/docsfera.json +++ b/docsfera.json @@ -2394,88 +2394,6 @@ ] } }, - "/inputs/test-connection": { - "post": { - "operationId": "InputsController_testConnection", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TestConnectionReq" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TestConnectionRes" - } - } - } - }, - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "object" - } - } - } - } - }, - "tags": [ - "Inputs" - ] - } - }, - "/inputs/test-connection/get-columns": { - "post": { - "operationId": "InputsController_getColumns", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TestConnectionGetColumnsReq" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TestConnectionGetColumnsRes" - } - } - } - }, - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "object" - } - } - } - } - }, - "tags": [ - "Inputs" - ] - } - }, "/inputs": { "post": { "operationId": "InputsController_create", @@ -3298,9 +3216,9 @@ } }, "info": { - "title": "Maestro - catalog-permissions", + "title": "Maestro - feat/incremental-table", "description": "Documentation for Maestro gateway", - "version": "14.11.2022 - 16:15", + "version": "16.11.2022 - 9:54", "contact": {} }, "tags": [], @@ -5174,13 +5092,31 @@ "updated_at" ] }, + "AvailableEntity": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "replication_methods": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "name", + "replication_methods" + ] + }, "GetAvailableEntitiesRes": { "type": "object", "properties": { "entities": { "type": "array", "items": { - "type": "string" + "$ref": "#/components/schemas/AvailableEntity" } } }, @@ -5188,99 +5124,6 @@ "entities" ] }, - "CredentialsJdbc": { - "type": "object", - "properties": { - "jdbc_user": { - "type": "string" - }, - "jdbc_password": { - "type": "string" - }, - "database": { - "type": "string" - }, - "endpoint": { - "type": "string" - }, - "port": { - "type": "string" - }, - "engine": { - "type": "string" - }, - "schema": { - "type": "string" - } - } - }, - "TestConnectionReq": { - "type": "object", - "properties": { - "plugin": { - "type": "string" - }, - "credentials": { - "$ref": "#/components/schemas/CredentialsJdbc" - }, - "info": { - "type": "object" - } - }, - "required": [ - "plugin", - "credentials" - ] - }, - "TestConnectionRes": { - "type": "object", - "properties": { - "connection_state": { - "type": "boolean" - }, - "total_entities": { - "type": "number" - }, - "database_tables": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "connection_state", - "total_entities", - "database_tables" - ] - }, - "TestConnectionGetColumnsReq": { - "type": "object", - "properties": { - "plugin": { - "type": "string" - }, - "tables": { - "type": "array", - "items": { - "type": "string" - } - }, - "credentials": { - "$ref": "#/components/schemas/CredentialsJdbc" - }, - "id": { - "type": "string" - }, - "info": { - "type": "object" - } - }, - "required": [ - "plugin", - "tables" - ] - }, "TableColumns": { "type": "object", "properties": { @@ -5298,203 +5141,16 @@ "items": { "type": "string" } + }, + "type": { + "type": "string" } }, "required": [ "name", "columns", - "references" - ] - }, - "TestConnectionGetColumnsRes": { - "type": "object", - "properties": { - "tables": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TableColumns" - } - } - }, - "required": [ - "tables" - ] - }, - "FileFormatParams": { - "type": "object", - "properties": { - "sep": { - "type": "string" - }, - "header": { - "type": "boolean" - }, - "encoding": { - "type": "string" - } - }, - "required": [ - "sep", - "header", - "encoding" - ] - }, - "GoogleAnalyticsClientSecrets": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "project_id": { - "type": "string" - }, - "private_key_id": { - "type": "string" - }, - "private_key": { - "type": "string" - }, - "client_email": { - "type": "string" - }, - "client_id": { - "type": "string" - }, - "auth_uri": { - "type": "string" - }, - "token_uri": { - "type": "string" - }, - "auth_provider_x509_cert_url": { - "type": "string" - }, - "client_x509_cert_url": { - "type": "string" - } - }, - "required": [ - "type", - "project_id", - "private_key_id", - "private_key", - "client_email", - "client_id", - "auth_uri", - "token_uri", - "auth_provider_x509_cert_url", - "client_x509_cert_url" - ] - }, - "Credentials": { - "type": "object", - "properties": { - "jdbc_user": { - "type": "string" - }, - "jdbc_password": { - "type": "string" - }, - "database": { - "type": "string" - }, - "endpoint": { - "type": "string" - }, - "port": { - "type": "string" - }, - "engine": { - "type": "string" - }, - "schema": { - "type": "string" - }, - "connection_type": { - "type": "string" - }, - "client_aws_access_key_id": { - "type": "string" - }, - "client_aws_secret_access_key": { - "type": "string" - }, - "client_bucket": { - "type": "string" - }, - "file_to_extract": { - "type": "string" - }, - "file_format_params": { - "$ref": "#/components/schemas/FileFormatParams" - }, - "view_id": { - "type": "string" - }, - "client_secrets": { - "$ref": "#/components/schemas/GoogleAnalyticsClientSecrets" - }, - "start_date": { - "type": "string" - }, - "end_date": { - "type": "string" - }, - "oauth_code": { - "type": "string" - } - }, - "required": [ - "connection_type" - ] - }, - "OauthObject": { - "type": "object", - "properties": { - "get_tokens_url": { - "type": "string" - }, - "get_tokens_url_params": { - "type": "string" - }, - "get_tokens_set_response": { - "type": "object" - }, - "content_type": { - "type": "string" - } - } - }, - "InputOptions": { - "type": "object", - "properties": { - "oauth": { - "$ref": "#/components/schemas/OauthObject" - }, - "skip_select_columns": { - "type": "boolean" - }, - "skip_select_entities": { - "type": "boolean" - }, - "skip_transformation": { - "type": "boolean" - } - } - }, - "AuthParameters": { - "type": "object", - "properties": { - "aws_access_key_id": { - "type": "string" - }, - "aws_secret_access_key": { - "type": "string" - } - }, - "required": [ - "aws_access_key_id", - "aws_secret_access_key" + "references", + "type" ] }, "CreateInputReq": { @@ -5517,58 +5173,6 @@ }, "type": { "type": "string" - }, - "category": { - "type": "string", - "deprecated": true - }, - "credentials": { - "deprecated": true, - "allOf": [ - { - "$ref": "#/components/schemas/Credentials" - } - ] - }, - "options": { - "deprecated": true, - "allOf": [ - { - "$ref": "#/components/schemas/InputOptions" - } - ] - }, - "info": { - "type": "object", - "deprecated": true - }, - "cron": { - "type": "string", - "deprecated": true - }, - "source_bucket": { - "type": "string", - "deprecated": true - }, - "source_prefix": { - "type": "string", - "deprecated": true - }, - "auth_parameters": { - "deprecated": true, - "allOf": [ - { - "$ref": "#/components/schemas/AuthParameters" - } - ] - }, - "file_format_params": { - "deprecated": true, - "allOf": [ - { - "$ref": "#/components/schemas/FileFormatParams" - } - ] } }, "required": [ @@ -5607,58 +5211,6 @@ }, "updated_at": { "type": "string" - }, - "category": { - "type": "string", - "deprecated": true - }, - "credentials": { - "deprecated": true, - "allOf": [ - { - "$ref": "#/components/schemas/Credentials" - } - ] - }, - "options": { - "deprecated": true, - "allOf": [ - { - "$ref": "#/components/schemas/InputOptions" - } - ] - }, - "info": { - "type": "object", - "deprecated": true - }, - "cron": { - "type": "string", - "deprecated": true - }, - "source_bucket": { - "type": "string", - "deprecated": true - }, - "source_prefix": { - "type": "string", - "deprecated": true - }, - "auth_parameters": { - "deprecated": true, - "allOf": [ - { - "$ref": "#/components/schemas/AuthParameters" - } - ] - }, - "file_format_params": { - "deprecated": true, - "allOf": [ - { - "$ref": "#/components/schemas/FileFormatParams" - } - ] } }, "required": [ diff --git a/package-lock.json b/package-lock.json index f8c9084..02c6ff3 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.19.4", + "@dadosfera/protospack-v2": "3.20.0-beta.1", "@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.19.4", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.19.4.tgz", - "integrity": "sha512-Vb6bdFgQKYHf0kDK9kuMtN+nt3nkaMhJZ3wNVaUmQNxsnpGyARWBL29R2n+YnxS8g23tRwuj331sjg+DY0Fnhg==", + "version": "3.20.0-beta.1", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.20.0-beta.1.tgz", + "integrity": "sha512-5OJC8Gvyn20qXXct/xm2HyBiOkKlcXBnUo4bnZkY0leWcJxEiHEo1M7PsXmdXBnL3KufJKmL/STE1nPZjYx7DA==", "dependencies": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", @@ -12330,9 +12330,9 @@ } }, "@dadosfera/protospack-v2": { - "version": "3.19.4", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.19.4.tgz", - "integrity": "sha512-Vb6bdFgQKYHf0kDK9kuMtN+nt3nkaMhJZ3wNVaUmQNxsnpGyARWBL29R2n+YnxS8g23tRwuj331sjg+DY0Fnhg==", + "version": "3.20.0-beta.1", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.20.0-beta.1.tgz", + "integrity": "sha512-5OJC8Gvyn20qXXct/xm2HyBiOkKlcXBnUo4bnZkY0leWcJxEiHEo1M7PsXmdXBnL3KufJKmL/STE1nPZjYx7DA==", "requires": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", diff --git a/package.json b/package.json index 03bfb2a..c5b33b9 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.19.4", + "@dadosfera/protospack-v2": "3.20.0-beta.1", "@grpc/grpc-js": "^1.6.7", "@grpc/proto-loader": "^0.6.13", "@nestjs/common": "^8.4.7", diff --git a/src/modules/inputs/dtos/input.model.ts b/src/modules/inputs/dtos/input.model.ts index fd8c5c5..7b40d1e 100644 --- a/src/modules/inputs/dtos/input.model.ts +++ b/src/modules/inputs/dtos/input.model.ts @@ -1,106 +1,5 @@ import { ApiProperty, ApiPropertyOptional, OmitType } from '@nestjs/swagger'; -import { Info } from 'protospack/dist/lib/interfaces'; -export class GoogleAnalyticsClientSecrets { - @ApiProperty() - type: string; - @ApiProperty() - project_id: string; - @ApiProperty() - private_key_id: string; - @ApiProperty() - private_key: string; - @ApiProperty() - client_email: string; - @ApiProperty() - client_id: string; - @ApiProperty() - auth_uri: string; - @ApiProperty() - token_uri: string; - @ApiProperty() - auth_provider_x509_cert_url: string; - @ApiProperty() - client_x509_cert_url: string; -} -export class OauthObject { - @ApiPropertyOptional() - get_tokens_url: string; - @ApiPropertyOptional() - get_tokens_url_params: string; - @ApiPropertyOptional() - get_tokens_set_response: Record; - @ApiPropertyOptional() - content_type: string; -} -export class InputOptions { - @ApiPropertyOptional() - oauth: OauthObject; - @ApiPropertyOptional() - skip_select_columns: true; - @ApiPropertyOptional() - skip_select_entities: false; - @ApiPropertyOptional() - skip_transformation: true; -} -export class FileFormatParams { - @ApiProperty() - sep: string; - @ApiProperty() - header: boolean; - @ApiProperty() - encoding: string; -} - -export class AuthParameters { - @ApiProperty() - aws_access_key_id: string; - @ApiProperty() - aws_secret_access_key: string; -} -export class CredentialsJdbc { - @ApiPropertyOptional() - jdbc_user: string; - @ApiPropertyOptional() - jdbc_password: string; - @ApiPropertyOptional() - database: string; - @ApiPropertyOptional() - endpoint: string; - @ApiPropertyOptional() - port: string; - @ApiPropertyOptional() - engine: string; - @ApiPropertyOptional() - schema: string; -} -export class Credentials extends CredentialsJdbc { - @ApiProperty() - connection_type: string; - - @ApiPropertyOptional() - client_aws_access_key_id: string; - @ApiPropertyOptional() - client_aws_secret_access_key: string; - @ApiPropertyOptional() - client_bucket: string; - @ApiPropertyOptional() - file_to_extract: string; - @ApiPropertyOptional() - file_format_params: FileFormatParams; - - @ApiPropertyOptional() - view_id: string; - @ApiPropertyOptional() - client_secrets: GoogleAnalyticsClientSecrets; - @ApiPropertyOptional() - start_date: string; - @ApiPropertyOptional() - end_date: string; - - @ApiPropertyOptional() - oauth_code: string; -} export class Column { @ApiProperty() name: string; @@ -114,6 +13,14 @@ export class TableColumns { columns: string[]; @ApiProperty() references: Column[]; + @ApiProperty() + type: string; +} +export class AvailableEntity { + @ApiProperty() + name: string; + @ApiProperty() + replication_methods: string[]; } export class Input { @@ -133,26 +40,6 @@ export class Input { created_at: string; @ApiProperty() updated_at: string; - - //deprecated attributes (for retro compatibility) - @ApiPropertyOptional({ deprecated: true }) - category: string; - @ApiPropertyOptional({ deprecated: true }) - credentials: Credentials; - @ApiPropertyOptional({ deprecated: true }) - options: InputOptions; - @ApiPropertyOptional({ deprecated: true }) - info: Info; - @ApiPropertyOptional({ deprecated: true }) - cron: string; - @ApiPropertyOptional({ deprecated: true }) - source_bucket: string; - @ApiPropertyOptional({ deprecated: true }) - source_prefix: string; - @ApiPropertyOptional({ deprecated: true }) - auth_parameters: AuthParameters; - @ApiPropertyOptional({ deprecated: true }) - file_format_params: FileFormatParams; } export class GetAvailableEntitiesReq { @ApiProperty() @@ -160,43 +47,10 @@ export class GetAvailableEntitiesReq { } export class GetAvailableEntitiesRes { - @ApiProperty() - entities: string[]; + @ApiProperty({ type: [AvailableEntity] }) + entities: AvailableEntity[]; } -export class TestConnectionGetColumnsReq { - @ApiProperty() - plugin: string; - @ApiProperty() - tables: string[]; - @ApiPropertyOptional() - credentials: CredentialsJdbc; - @ApiPropertyOptional() - id: string; - @ApiPropertyOptional() - info: Info; -} -export class TestConnectionGetColumnsRes { - @ApiProperty({ type: [TableColumns] }) - tables: TableColumns[]; -} - -export class TestConnectionReq { - @ApiProperty() - plugin: string; - @ApiProperty() - credentials: CredentialsJdbc; - @ApiPropertyOptional() - info: Info; -} -export class TestConnectionRes { - @ApiProperty() - connection_state: boolean; - @ApiProperty() - total_entities: number; - @ApiProperty() - database_tables: string[]; -} export class CreateInputReq extends OmitType(Input, [ 'id', 'created_at', diff --git a/src/modules/inputs/inputs.controller.ts b/src/modules/inputs/inputs.controller.ts index 021eb35..4ce5dc6 100644 --- a/src/modules/inputs/inputs.controller.ts +++ b/src/modules/inputs/inputs.controller.ts @@ -19,16 +19,10 @@ import { GetAvailableEntitiesReq, GetAvailableEntitiesRes, Input, - TestConnectionGetColumnsReq, - TestConnectionGetColumnsRes, - TestConnectionReq, - TestConnectionRes, } from './dtos/input.model'; import { UpdateInputRequest } from './dtos/old_interfaces'; import { RequestUser, User } from 'src/authentication/user.decorator'; import { Info } from '@dadosfera/protospack-v2/dist/lib/Input/interfaces/entities'; -import ErrorBuilder from 'src/utils/ErrorBuilder'; -import ErrorCodes from 'src/utils/errorCodes'; import { GrpcToHttpExceptionFilter } from 'src/error/grpc-to-http-exception.filter'; @ApiTags('Inputs') @@ -75,42 +69,19 @@ export class InputsController { @Get('available-entities/:plugin') @ApiOkResponse({ type: GetAvailableEntitiesRes }) async getAvailableEntities( - @Body() body, @Param() params: GetAvailableEntitiesReq, + @User() user: RequestUser, ) { - const { info } = body; const { plugin } = params; - return await this.inputService.getAvailableEntities({ info, plugin }); - } - - @Post('/test-connection') - @ApiOkResponse({ type: TestConnectionRes }) - async testConnection(@Body() data: TestConnectionReq) { - this.logger.info(`/test-connection - ON TEST CONNECTION ROUTE`, { - user: data.info.user_id, - customer: data.info.customer, - }); - - const response = await this.inputService.testConnection(data); - - return response; - } - - @Post('/test-connection/get-columns') - @ApiOkResponse({ type: TestConnectionGetColumnsRes }) - async getColumns(@Body() data: TestConnectionGetColumnsReq) { - throw new ErrorBuilder(ErrorCodes.NOT_IMPLEMENTED); - this.logger.info( - `/test-connection/get-columns - ON TEST CONNECTION GET COLUMNS ROUTE`, - { - user: data.info.user_id, - customer: data.info.customer, + const availableEntities = await this.inputService.getAvailableEntities({ + info: { + customer: user.customer_name, + customer_id: user.customer_id, + user_id: user.user_id, }, - ); - - const response = await this.inputService.getColumns(data); - - return response; + plugin, + }); + return availableEntities; } @Post() diff --git a/src/modules/inputs/inputs.service.ts b/src/modules/inputs/inputs.service.ts index 924ec32..c67e6ef 100644 --- a/src/modules/inputs/inputs.service.ts +++ b/src/modules/inputs/inputs.service.ts @@ -14,10 +14,10 @@ import { objectCamelToSnake } from 'src/utils/CaseConverter'; import { IIdRequest, UpdateInputRequest } from './dtos/old_interfaces'; import { Input } from '@dadosfera/protospack-v2'; import { + GetAvailableEntitiesRequest, InputCreateGenericRequest, InputCreateS3Request, InputNewCreateRequest, - TestConnectionGetColumnsRequest, TestConnectionRequest, } from '@dadosfera/protospack-v2/dist/lib/Input/interfaces/messages'; import { Info } from '@dadosfera/protospack-v2/dist/lib/Input/interfaces/entities'; @@ -88,32 +88,6 @@ export class InputsService { return testConnectionResponse; }, - getColumns: async (data: TestConnectionGetColumnsRequest) => { - this.logger.info('InputClientService - TestConnection/Get-Columns'); - const getColumnsResponse = await new Promise((resolve, reject) => { - this.inputReadService.GetColumns(data).subscribe({ - next(x) { - resolve(objectCamelToSnake(x)); - }, - error(err) { - reject(err); - }, - complete() { - // console.log('done'); - }, - }); - }) - .then((res) => { - this.logger.info('Done'); - return res; - }) - .catch((err) => { - this.logger.error(err.message); - throw new Error(err); - }); - - return getColumnsResponse; - }, getAvailableEntities: async (data) => { this.logger.info('InputClientService - GetAvailableEntities'); data; @@ -188,12 +162,9 @@ export class InputsService { // this.validateCron(data); const { body, info } = data; - if (body.info) delete body.info; - - const inputCreateGenericRequest: any | InputCreateGenericRequest = { + const inputCreateGenericRequest: InputCreateGenericRequest = { input: { ...body, - credentials: body.credentials && JSON.stringify(body.credentials), }, info, }; @@ -205,8 +176,8 @@ export class InputsService { return { input: adjustedInput }; } - async getAvailableEntities(data): Promise<{ entities: string[] }> { - return await this.OLD_inputClient.getAvailableEntities(data); + async getAvailableEntities(data: GetAvailableEntitiesRequest) { + return lastValueFrom(this.inputReadService.GetAvailableEntities(data)); } async findAll(info: Info) { @@ -263,17 +234,6 @@ export class InputsService { } } - async getColumns(data) { - try { - const testConnectionGetColumnsResponse = - await this.OLD_inputClient.getColumns(data); - - return testConnectionGetColumnsResponse; - } catch (err) { - throw new HttpException(err.message, HttpStatus.NOT_FOUND); - } - } - generateInputS3Payload(payload) { const { credentials, plugin, cron } = payload; if (!credentials) return payload; From 0aadf7fc409075b966a4020c4478018679748bd2 Mon Sep 17 00:00:00 2001 From: Alexsander Pereira Date: Wed, 16 Nov 2022 15:18:18 -0300 Subject: [PATCH 10/11] FEAT: Adding stg2 --- .github/workflows/deploy-manually.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/deploy-manually.yml b/.github/workflows/deploy-manually.yml index a845884..b35183b 100644 --- a/.github/workflows/deploy-manually.yml +++ b/.github/workflows/deploy-manually.yml @@ -12,6 +12,7 @@ on: options: - dev - stg + - stg2 - prd jobs: @@ -152,17 +153,17 @@ jobs: - name: Extract Docs BlockId and PageId env: ENV: ${{ needs.extract_environment.outputs.environment }} - DEV_DOCS_BLOCK_ID: ${{ secrets.DEV_DOCS_BLOCK_ID }} - DEV_DOCS_PAGE_ID: ${{ secrets.DEV_DOCS_PAGE_ID }} + STG2_DOCS_BLOCK_ID: ${{ secrets.DEV_DOCS_BLOCK_ID }} + STG2_DOCS_PAGE_ID: ${{ secrets.DEV_DOCS_PAGE_ID }} STG_DOCS_BLOCK_ID: ${{ secrets.STG_DOCS_BLOCK_ID }} STG_DOCS_PAGE_ID: ${{ secrets.STG_DOCS_PAGE_ID }} PRD_DOCS_BLOCK_ID: ${{ secrets.PRD_DOCS_BLOCK_ID }} PRD_DOCS_PAGE_ID: ${{ secrets.PRD_DOCS_PAGE_ID }} shell: bash run: | - if [ $ENV == "dev" ]; then - echo "block_id=$DEV_DOCS_BLOCK_ID" >> $GITHUB_OUTPUT - echo "page_id=$DEV_DOCS_PAGE_ID" >> $GITHUB_OUTPUT + if [ $ENV == "stg2" ]; then + echo "block_id=$STG2_DOCS_BLOCK_ID" >> $GITHUB_OUTPUT + echo "page_id=$STG2_DOCS_PAGE_ID" >> $GITHUB_OUTPUT elif [ $ENV == "stg" ]; then echo "block_id=$STG_DOCS_BLOCK_ID" >> $GITHUB_OUTPUT echo "page_id=$STG_DOCS_PAGE_ID" >> $GITHUB_OUTPUT From c420ef62ed8ed47e177d8623b975d717298f5f5e Mon Sep 17 00:00:00 2001 From: Gabriel Rosa Date: Wed, 16 Nov 2022 16:46:38 -0300 Subject: [PATCH 11/11] new protospack version --- docsfera.json | 2 +- package-lock.json | 14 +++++++------- package.json | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docsfera.json b/docsfera.json index f3e27da..3642ccc 100644 --- a/docsfera.json +++ b/docsfera.json @@ -3218,7 +3218,7 @@ "info": { "title": "Maestro - feat/incremental-table", "description": "Documentation for Maestro gateway", - "version": "16.11.2022 - 9:54", + "version": "16.11.2022 - 16:46", "contact": {} }, "tags": [], diff --git a/package-lock.json b/package-lock.json index 02c6ff3..94fbd56 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.20.0-beta.1", + "@dadosfera/protospack-v2": "3.20.0", "@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.20.0-beta.1", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.20.0-beta.1.tgz", - "integrity": "sha512-5OJC8Gvyn20qXXct/xm2HyBiOkKlcXBnUo4bnZkY0leWcJxEiHEo1M7PsXmdXBnL3KufJKmL/STE1nPZjYx7DA==", + "version": "3.20.0", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.20.0.tgz", + "integrity": "sha512-eatmjfYmfD2Rqxi3L6/XDOqkImYc9PvChTTXO03RgiOk2IDEALvacPGp6j1bce2jfNMA2LoP3Bd1ugklecDPgg==", "dependencies": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", @@ -12330,9 +12330,9 @@ } }, "@dadosfera/protospack-v2": { - "version": "3.20.0-beta.1", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.20.0-beta.1.tgz", - "integrity": "sha512-5OJC8Gvyn20qXXct/xm2HyBiOkKlcXBnUo4bnZkY0leWcJxEiHEo1M7PsXmdXBnL3KufJKmL/STE1nPZjYx7DA==", + "version": "3.20.0", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.20.0.tgz", + "integrity": "sha512-eatmjfYmfD2Rqxi3L6/XDOqkImYc9PvChTTXO03RgiOk2IDEALvacPGp6j1bce2jfNMA2LoP3Bd1ugklecDPgg==", "requires": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", diff --git a/package.json b/package.json index c5b33b9..e936e51 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.20.0-beta.1", + "@dadosfera/protospack-v2": "3.20.0", "@grpc/grpc-js": "^1.6.7", "@grpc/proto-loader": "^0.6.13", "@nestjs/common": "^8.4.7",