diff --git a/package-lock.json b/package-lock.json index a3657d4..d47d1f4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@aws-sdk/client-secrets-manager": "^3.112.0", "@dadosfera/dadosfera-logs": "^1.0.0-beta.3", - "@dadosfera/protospack-v2": "3.12.0", + "@dadosfera/protospack-v2": "3.12.1", "@grpc/grpc-js": "^1.6.7", "@grpc/proto-loader": "^0.6.13", "@nestjs/common": "^8.4.7", @@ -1725,9 +1725,9 @@ } }, "node_modules/@dadosfera/protospack-v2": { - "version": "3.12.0", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.12.0.tgz", - "integrity": "sha512-BJNmVC+bjO+ICc13VWllmzAMqqI4/1x6H2LxXaVyi65rmn6FNHMNj6aC/WMlko17II/X2Ih40QdrrQ5io019mg==", + "version": "3.12.1", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.12.1.tgz", + "integrity": "sha512-hk+63FkmqwQonOtBUSAQfdRt4H638DxTsP95tD2r5D1YxKD6Wyrxg1+TRgUHhIneXNySGORG5jS4O6vA5+tYTw==", "dependencies": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", @@ -12283,9 +12283,9 @@ } }, "@dadosfera/protospack-v2": { - "version": "3.12.0", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.12.0.tgz", - "integrity": "sha512-BJNmVC+bjO+ICc13VWllmzAMqqI4/1x6H2LxXaVyi65rmn6FNHMNj6aC/WMlko17II/X2Ih40QdrrQ5io019mg==", + "version": "3.12.1", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.12.1.tgz", + "integrity": "sha512-hk+63FkmqwQonOtBUSAQfdRt4H638DxTsP95tD2r5D1YxKD6Wyrxg1+TRgUHhIneXNySGORG5jS4O6vA5+tYTw==", "requires": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", diff --git a/package.json b/package.json index 7421ef6..21f9505 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "dependencies": { "@aws-sdk/client-secrets-manager": "^3.112.0", "@dadosfera/dadosfera-logs": "^1.0.0-beta.3", - "@dadosfera/protospack-v2": "3.12.0", + "@dadosfera/protospack-v2": "3.12.1", "@grpc/grpc-js": "^1.6.7", "@grpc/proto-loader": "^0.6.13", "@nestjs/common": "^8.4.7", diff --git a/src/main.ts b/src/main.ts index b931951..36a69a9 100644 --- a/src/main.ts +++ b/src/main.ts @@ -43,11 +43,11 @@ async function bootstrap() { await writeFileSync('swagger.json', JSON.stringify(document)); - if (process.env.ENV != 'stg' && process.env.ENV != 'prd') - SwaggerModule.setup('api', app, document); + // if (process.env.ENV != 'stg' && process.env.ENV != 'prd') + SwaggerModule.setup('api', app, document); - const swaggerDoc = process.env.ENV === 'dev' ? document : documentEmpty; - SwaggerModule.setup('api', app, swaggerDoc); + // const swaggerDoc = process.env.ENV === 'dev' ? document : documentEmpty; + // SwaggerModule.setup('api', app, swaggerDoc); await app.listen(3333); } diff --git a/src/modules/network-config/dto/network-config.ts b/src/modules/network-config/dto/network-config.ts index b738380..2a52f00 100644 --- a/src/modules/network-config/dto/network-config.ts +++ b/src/modules/network-config/dto/network-config.ts @@ -2,12 +2,7 @@ import { NetworkConfigEntity, NetworkConfigToCatalog, } from '@dadosfera/protospack-v2/dist/lib/NetworkConfig/interfaces/entities'; -import { - ApiProperty, - ApiPropertyOptional, - OmitType, - PickType, -} from '@nestjs/swagger'; +import { ApiProperty, ApiPropertyOptional, PickType } from '@nestjs/swagger'; export enum NetworkConfigTypesEnum { vpn = 'vpn', @@ -19,37 +14,48 @@ export class NetworkConfigDto implements NetworkConfigEntity { @ApiProperty() id: string; @ApiProperty() - name: string; + created_at: string; + @ApiProperty() + updated_at: string; @ApiProperty() customer_name: string; @ApiProperty() - description: string; + customer_id: string; + @ApiProperty() + properties: any; + @ApiProperty() + user_id: string; + @ApiProperty() + keywords: string; + @ApiProperty() + tags: string; + + @ApiProperty() + network_type_id: string; + @ApiProperty() + network_type_name: string; @ApiProperty({ enum: NetworkConfigTypesEnum }) type: string; @ApiProperty({ enum: NetworkConfigPluginsEnum }) plugin: string; @ApiProperty() - properties: any; + name: string; @ApiProperty() - created_at: string; - @ApiProperty() - updated_at: string; - @ApiProperty() - network_type_id: string; - @ApiProperty() - network_type_name: string; - @ApiProperty() - user_id: string; - @ApiProperty() - customer_id: string; - @ApiProperty() - keywords: string; - @ApiProperty() - tags: string; + description: string; } -export class NetworkConfigNoSecrets extends OmitType(NetworkConfigDto, [ - 'properties', -]) {} + +export class CreateNetworkConfigReq extends PickType(NetworkConfigDto, [ + 'network_type_id', + 'network_type_name', + 'name', + 'description', + 'type', + 'plugin', +]) { + @ApiProperty({ format: 'binary' }) + ovpn_file: string; +} + export class NetworkConfigOpenVpnProperties { @ApiProperty({ enum: NetworkConfigPluginsEnum }) plugin: NetworkConfigPluginsEnum; @@ -122,24 +128,7 @@ export class FindNetworkConfigByidDetailsRes { @ApiProperty() network_config: FindNetworkConfigByidDetails; } -export class CreateNetworkConfigReq extends PickType(NetworkConfigDto, [ - 'name', - 'description', - 'type', - 'network_type_id', - 'plugin', -]) { - @ApiProperty({ - type: 'file', - properties: { - file: { - type: 'string', - format: 'binary', - }, - }, - }) - OVPN_FILE: any; -} + export class CreateNetworkConfigRes { @ApiProperty() network_config: NetworkConfigToCatalogDto; diff --git a/src/modules/network-config/network-config.controller.ts b/src/modules/network-config/network-config.controller.ts index 3948f50..fbc6e99 100644 --- a/src/modules/network-config/network-config.controller.ts +++ b/src/modules/network-config/network-config.controller.ts @@ -91,19 +91,21 @@ export class NetworkConfigController { @Post() @ApiOkResponse({ type: CreateNetworkConfigRes }) @ApiConsumes('multipart/form-data') - @UseInterceptors(FileInterceptor('OVPN_FILE')) + @UseInterceptors(FileInterceptor('ovpn_file')) async createNetworkConfigs( @User() user: RequestUser, - @Body() body: CreateNetworkConfigReq, @UploadedFile() file: Express.Multer.File, + @Body() body: CreateNetworkConfigReq, ) { this.logger.info('POST /network-config', { user: user.user_id, customer: user.customer_name, }); + const { customer_id, customer_name, user_id } = user; return this.networkConfigService.createNetworkConfig(body, file, { - customer_name: user.customer_name, - customer_id: user.customer_id, + customer_name, + customer_id, + user_id, }); } diff --git a/src/modules/network-config/network-config.service.ts b/src/modules/network-config/network-config.service.ts index e956238..e9228a2 100644 --- a/src/modules/network-config/network-config.service.ts +++ b/src/modules/network-config/network-config.service.ts @@ -91,9 +91,9 @@ export class NetworkConfigService { async createNetworkConfig( body: CreateNetworkConfigReq, file: Express.Multer.File, - { customer_name, customer_id }, + { customer_name, customer_id, user_id }, ): Promise { - const { description, name, network_type_id } = body; + const { description, name, network_type_id, network_type_name } = body; let { type, plugin } = body; type = type || 'vpn'; @@ -102,12 +102,14 @@ export class NetworkConfigService { const OVPN_FILE_STRING = Buffer.from(file.buffer).toString(); const meta = new Metadata(); + meta.add('customer_id', customer_id); meta.add('customer_name', customer_name); + meta.add('user_id', user_id); + const { network_config } = await lastValueFrom( this.networkConfigWriteClient.NetworkConfigCreate( { - customer_name, description, name, properties: JSON.stringify({ @@ -116,6 +118,8 @@ export class NetworkConfigService { }), type, network_type_id, + network_type_name, + plugin, }, meta, ),