Merge main

This commit is contained in:
Victor Radael
2022-07-07 16:32:17 -03:00
46 changed files with 5551 additions and 4182 deletions
+19 -45
View File
@@ -1,12 +1,11 @@
import {
Logger,
Body,
Controller,
Headers,
Post,
HttpCode,
HttpStatus,
OnApplicationBootstrap,
Inject,
} from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import {
@@ -21,51 +20,26 @@ import {
AuthVerifyTotpMfaRequest,
} from 'protospack-v2/dist/lib/Duc/interfaces/messages';
import { AuthClientService } from '../../clients/auth/client.service';
import { PermissionsClientService } from '../../clients/permissions/client.service';
import { Permissions } from '../../authentication/permissions.enum';
import ErrorBuilder from '../../utils/ErrorBuilder';
import { LoginDto } from './dtos/login';
import { AuthClientService } from './auth.service';
import { DadosferaLogger } from 'dadosfera-logs';
@ApiTags('Auth')
@Controller('auth')
export class AuthController implements OnApplicationBootstrap {
private readonly logger = new Logger(AuthController.name);
export class AuthController {
logger: any;
constructor(
@Inject(DadosferaLogger)
dadosferaLogger: DadosferaLogger,
private authClient: AuthClientService,
private permissionsClient: PermissionsClientService,
) {}
// internally used to send permissions to duc on microservice startup
async onApplicationBootstrap() {
this.logger.log('sending permissions to DUC...');
const permissions = Object.values(Permissions).flatMap((namespace) =>
Object.values(namespace),
);
return this.permissionsClient
.injectPermissions({ permissions })
.catch((err: ErrorBuilder) => {
if (
err.code === 'No connection established' &&
process.env.LOCAL_ENV === 'true'
) {
return this.logger.log(
"couldn't connect to DUC. suppresing in local env",
);
}
throw err;
});
) {
this.logger = dadosferaLogger.logger;
}
@Post('sign-in')
@HttpCode(HttpStatus.OK)
async signIn(@Body() { username, password, totp }: AuthSignInRequest) {
this.logger.log(`/auth`, 'SignIn');
this.logger.info('/auth - SignIn');
return this.authClient.signIn({ username, password, totp });
}
@@ -75,7 +49,7 @@ export class AuthController implements OnApplicationBootstrap {
async refreshAccessToken(
@Body() { refreshToken }: AuthRefreshAccessTokenRequest,
) {
this.logger.log(`/auth`, 'RefreshAccessToken');
this.logger.info('/auth - RefreshAccessToken');
return this.authClient.refreshAccessToken({ refreshToken });
}
@@ -86,7 +60,7 @@ export class AuthController implements OnApplicationBootstrap {
@Body() body: AuthChangePasswordRequest,
@Headers() headers,
) {
this.logger.log(`/auth`, 'change-password');
this.logger.info('/auth - change-password');
const { oldPassword, newPassword } = body;
const { authorization: accessToken } = headers;
@@ -101,7 +75,7 @@ export class AuthController implements OnApplicationBootstrap {
@Post('reset-password')
@HttpCode(HttpStatus.OK)
async resetPassword(@Body() body: AuthResetPasswordRequest) {
this.logger.log(`/auth`, 'reset-password');
this.logger.info('/auth - reset-password');
const { username } = body;
@@ -113,7 +87,7 @@ export class AuthController implements OnApplicationBootstrap {
async verifyResetPasswordCode(
@Body() body: AuthVerifyResetPasswordCodeRequest,
) {
this.logger.log(`/auth`, 'verify-reset-password-code');
this.logger.info('/auth - verify-reset-password-code');
const { username, code } = body;
@@ -123,7 +97,7 @@ export class AuthController implements OnApplicationBootstrap {
@Post('confirm-reset-password')
@HttpCode(HttpStatus.OK)
async confirmResetPassword(@Body() body: AuthConfirmResetPasswordRequest) {
this.logger.log(`/auth`, 'confirm-reset-password');
this.logger.info('/auth - confirm-reset-password');
const { username, code, newPassword } = body;
@@ -140,7 +114,7 @@ export class AuthController implements OnApplicationBootstrap {
@Body() body: AuthEnableTotpMfaRequest,
@Headers() headers,
) {
this.logger.log(`/auth`, 'enable-totp');
this.logger.info('/auth - enable-totp');
const { password } = body;
const { authorization: accessToken } = headers;
@@ -154,7 +128,7 @@ export class AuthController implements OnApplicationBootstrap {
@Body() body: AuthDisableTotpMfaRequest,
@Headers() headers,
) {
this.logger.log(`/auth`, 'disable-totp');
this.logger.info('/auth - disable-totp');
const { password } = body;
const { authorization: accessToken } = headers;
@@ -165,7 +139,7 @@ export class AuthController implements OnApplicationBootstrap {
@Post('dismiss-totp')
@HttpCode(HttpStatus.OK)
async dismissTotpMFA(@Headers() headers) {
this.logger.log(`/auth`, 'disable-totp');
this.logger.info('/auth - disable-totp');
const { authorization: accessToken } = headers;
@@ -175,7 +149,7 @@ export class AuthController implements OnApplicationBootstrap {
@Post('verify-totp')
@HttpCode(HttpStatus.OK)
async verifyTotp(@Body() body: AuthVerifyTotpMfaRequest, @Headers() headers) {
this.logger.log(`/auth`, 'enable-totp');
this.logger.info('/auth - enable-totp');
const { totp } = body;
const { authorization: accessToken } = headers;
+24
View File
@@ -0,0 +1,24 @@
import { Module } from '@nestjs/common';
import { ClientsModule } from '@nestjs/microservices';
import { DadosferaLogger } from 'dadosfera-logs';
import { AuthController } from './auth.controller';
import { AuthClientService } from './auth.service';
import { DucClient } from '../../clients/duc/client.config';
const ducClient = new DucClient();
@Module({
imports: [
ClientsModule.register([
{
name: 'DUC_PACKAGE',
...ducClient.config(),
},
]),
],
controllers: [AuthController],
providers: [AuthClientService, DadosferaLogger],
exports: [AuthClientService],
})
export class AuthModule {}
+140
View File
@@ -0,0 +1,140 @@
import { OnModuleInit, Inject, Injectable } from '@nestjs/common';
import { ClientGrpc } from '@nestjs/microservices';
import { DadosferaLogger } from 'dadosfera-logs';
import { lastValueFrom } from 'rxjs';
import { ProtoServices } from 'protospack-v2/dist/lib/Duc';
import { AuthProtoService as AuthServiceInterface } from 'protospack-v2/dist/lib/Duc/interfaces/write-service';
import {
AuthSignInRequest,
AuthRefreshAccessTokenRequest,
AuthEnableTotpMfaRequest,
AuthDisableTotpMfaRequest,
AuthDismissTotpMfaRequest,
AuthVerifyTotpMfaRequest,
AuthChangePasswordRequest,
AuthResetPasswordRequest,
AuthVerifyResetPasswordCodeRequest,
AuthConfirmResetPasswordRequest,
} from 'protospack-v2/dist/lib/Duc/interfaces/messages';
@Injectable()
export class AuthClientService implements OnModuleInit {
logger: any;
private authService: AuthServiceInterface;
constructor(
@Inject(DadosferaLogger)
dadosferaLogger: DadosferaLogger,
@Inject('DUC_PACKAGE') private readonly grpcClient: ClientGrpc,
) {
this.logger = dadosferaLogger.logger;
}
onModuleInit() {
this.authService = this.grpcClient.getService<AuthServiceInterface>(
ProtoServices.AuthProtoService,
);
}
async getPublicKeys() {
this.logger.info('GetPublicKeys');
return lastValueFrom(this.authService.AuthGetPublicKeys({}));
}
async signIn({ username, password, totp }: AuthSignInRequest) {
this.logger.info('SignIn');
return lastValueFrom(
this.authService.AuthSignIn({ username, password, totp }),
);
}
async refreshAccessToken({ refreshToken }: AuthRefreshAccessTokenRequest) {
this.logger.info('RefreshAccessToken');
return lastValueFrom(
this.authService.AuthRefreshAccessToken({ refreshToken }),
);
}
async changePassword({
accessToken,
oldPassword,
newPassword,
}: AuthChangePasswordRequest) {
this.logger.info('ChangePassword');
return lastValueFrom(
this.authService.AuthChangePassword({
accessToken,
oldPassword,
newPassword,
}),
);
}
async resetPassword({ username }: AuthResetPasswordRequest) {
this.logger.info('resetPassword');
return lastValueFrom(this.authService.AuthResetPassword({ username }));
}
async verifyResetPasswordCode({
username,
code,
}: AuthVerifyResetPasswordCodeRequest) {
this.logger.info('verifyResetPasswordCode');
return lastValueFrom(
this.authService.AuthVerifyResetPasswordCode({ username, code }),
);
}
async confirmResetPassword({
username,
code,
newPassword,
}: AuthConfirmResetPasswordRequest) {
this.logger.info('confirmResetPassword');
return lastValueFrom(
this.authService.AuthConfirmResetPassword({
username,
code,
newPassword,
}),
);
}
async enableTotpMFA({ accessToken, password }: AuthEnableTotpMfaRequest) {
this.logger.info('enableTotpMFA');
return lastValueFrom(
this.authService.AuthEnableTotpMfa({ accessToken, password }),
);
}
async disableTotpMFA({ accessToken, password }: AuthDisableTotpMfaRequest) {
this.logger.info('disableTotpMFA');
return lastValueFrom(
this.authService.AuthDisableTotpMfa({ accessToken, password }),
);
}
async dismissTotpMFA({ accessToken }: AuthDismissTotpMfaRequest) {
this.logger.info('dismissTotpMFA');
return lastValueFrom(this.authService.AuthDismissTotpMfa({ accessToken }));
}
async verifyTotp({ accessToken, totp }: AuthVerifyTotpMfaRequest) {
this.logger.info('disableTotpMFA');
return lastValueFrom(
this.authService.AuthVerifyTotpMfa({ accessToken, totp }),
);
}
}
+127 -31
View File
@@ -3,6 +3,7 @@ import {
Controller,
Delete,
Get,
Inject,
Param,
Post,
Query,
@@ -11,6 +12,7 @@ import { ApiTags } from '@nestjs/swagger';
import { AuthenticateCondition } from '../../authentication/authentication.decorator';
import { Permissions } from '../../authentication/permissions.enum';
import { CatalogService } from './catalog.service';
import { DadosferaLogger } from 'dadosfera-logs';
@ApiTags('Catalog')
@Controller('catalog')
@@ -33,11 +35,21 @@ import { CatalogService } from './catalog.service';
return user.permissions.includes(Permissions.CATALOG[action].seqid);
})
export class CatalogController {
constructor(private catalogService: CatalogService) {}
logger: any;
constructor(
@Inject(DadosferaLogger)
dadosferaLogger: DadosferaLogger,
private catalogService: CatalogService,
) {
this.logger = dadosferaLogger.logger;
}
@Get('all')
async catalogAll(@Body() body) {
console.log(`/catalog`, 'ON CATALOG ALL ROUTE');
this.logger.info(`/catalog - ON CATALOG ALL ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const res = await this.catalogService.catalogAll(body);
@@ -46,7 +58,10 @@ export class CatalogController {
@Get('data_apps')
async dataAppsAll(@Body() body) {
console.log(`/catalog`, 'ON FIND ALL DATA APPS ROUTE');
this.logger.info(`/catalog - ON FIND ALL DATA APPS ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const res = await this.catalogService.dataAppsAll(body);
@@ -55,7 +70,10 @@ export class CatalogController {
@Delete('data_apps/:id')
async dataAppsOne(@Param() params, @Body() body) {
console.log(`/catalog`, 'ON FIND ONE DATA APP ROUTE');
this.logger.info(`/catalog - ON FIND ONE DATA APP ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const { id } = params;
const res = await this.catalogService.dataAppsOne(id, body);
@@ -65,7 +83,10 @@ export class CatalogController {
@Get('dashboard-metabase')
async getAllDashboardMetabase(@Body() body) {
console.log(`/catalog`, 'ON GET ALL DASHBOARDS METABASE ROUTE');
this.logger.info(`/catalog - ON GET ALL DASHBOARDS METABASE ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const res = await this.catalogService.getAllDashboardMetabase(body);
@@ -75,7 +96,10 @@ export class CatalogController {
@Get('dashboard-metabase/:id')
async getOneDashboardMetabase(@Body() body, @Param() params) {
const { id } = params;
console.log(`/catalog`, 'ON GET ONE DASHBOARD METABASE ROUTE');
this.logger.info(`/catalog - ON GET ONE DASHBOARD METABASE ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const res = await this.catalogService.getOneDashboardMetabase(id, body);
@@ -84,7 +108,10 @@ export class CatalogController {
@Get('table-metadata')
async getAllTableMetadata(@Body() body, @Query() query) {
console.log(`/catalog`, 'ON GET ALL TABLES METADATA ROUTE');
this.logger.info(`/catalog - ON GET ALL TABLES METADATA ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
if (!query) {
const res = await this.catalogService.getAllTableMetadata(body);
@@ -98,7 +125,10 @@ export class CatalogController {
@Delete('table-metadata/:id')
async deleteOneTableMetadata(@Param() params, @Body() body) {
const { id } = params;
console.log(`/catalog`, 'ON DELETE ONE TABLE METADATA ROUTE');
this.logger.info(`/catalog - ON DELETE ONE TABLE METADATA ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const res = await this.catalogService.deleteOneTableMetadata(id, body);
@@ -107,7 +137,10 @@ export class CatalogController {
@Get('column-metadata')
async getOneColumnMetadata(@Body() body, @Query() params) {
console.log(`/catalog`, 'ON GET ONE COLUMN METADATA ROUTE');
this.logger.info(`/catalog - ON GET ONE COLUMN METADATA ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const res = await this.catalogService.getOneColumnMetadata(body, params);
@@ -116,7 +149,10 @@ export class CatalogController {
@Delete('column-metadata/:id')
async deleteOneColumnMetadata(@Param() params, @Body() body) {
console.log(`/catalog`, 'ON DELETE ONE COLUMN METADATA ROUTE');
this.logger.info(`/catalog - ON DELETE ONE COLUMN METADATA ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const { id } = params;
const res = await this.catalogService.deleteOneColumnMetadata(id, body);
@@ -126,7 +162,10 @@ export class CatalogController {
@Get('data-preview')
async getOneDataPreview(@Body() body, @Query() params) {
console.log(`/catalog`, 'ON GET ONE DATAPREVIEW ROUTE');
this.logger.info(`/catalog - ON GET ONE DATAPREVIEW ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const res = await this.catalogService.getOneDataPreview(body, params);
@@ -135,7 +174,10 @@ export class CatalogController {
@Get('data-status')
async getDataStatus(@Body() body) {
console.log(`/catalog`, 'ON GET DATA STATUS ROUTE');
this.logger.info(`/catalog - ON GET DATA STATUS ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const res = await this.catalogService.getDataStatus(body);
@@ -144,7 +186,10 @@ export class CatalogController {
@Get('data-status')
async createDataStatus(@Body() body) {
console.log(`/catalog`, 'ON CREATE DATA STATUS ROUTE');
this.logger.info(`/catalog - ON CREATE DATA STATUS ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const res = await this.catalogService.createDataStatus(body);
@@ -153,7 +198,10 @@ export class CatalogController {
@Get('data-description')
async getDataDescription(@Body() body) {
console.log(`/catalog`, 'ON GET DATA DESCRIPTION ROUTE');
this.logger.info(`/catalog - ON GET DATA DESCRIPTION ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const res = await this.catalogService.getDataDescription(body);
@@ -162,7 +210,10 @@ export class CatalogController {
@Post('data-description')
async createDataDescription(@Body() body) {
console.log(`/catalog`, 'ON CREATE DATA DESCRIPTION ROUTE');
this.logger.info(`/catalog - ON CREATE DATA DESCRIPTION ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const res = await this.catalogService.createDataDescription(body);
@@ -171,7 +222,10 @@ export class CatalogController {
@Get('data-docs')
async getDataDocs(@Body() body) {
console.log(`/catalog`, 'ON GET DATA DOCS ROUTE');
this.logger.info(`/catalog - ON GET DATA DOCS ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const res = await this.catalogService.getDataDocs(body);
@@ -180,7 +234,10 @@ export class CatalogController {
@Post('data-docs')
async createDataDocs(@Body() body) {
console.log(`/catalog`, 'ON CREATE DATA DOCS ROUTE');
this.logger.info(`/catalog - ON CREATE DATA DOCS ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const res = await this.catalogService.createDataDocs(body);
@@ -189,7 +246,10 @@ export class CatalogController {
@Get('data-rating')
async getDataRating(@Body() body) {
console.log(`/catalog`, 'ON GET DATA RATING ROUTE');
this.logger.info(`/catalog - ON GET DATA RATING ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const res = await this.catalogService.getDataRating(body);
@@ -198,7 +258,10 @@ export class CatalogController {
@Post('data-rating')
async createDataRating(@Body() body) {
console.log(`/catalog`, 'ON GET DATA RATING ROUTE');
this.logger.info(`/catalog - ON GET DATA RATING ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const res = await this.catalogService.createDataRating(body);
@@ -207,7 +270,7 @@ export class CatalogController {
@Get('summary-rating/:id')
async getSummaryRating() {
console.log(`/catalog`, 'ON GET SUMMARY RATING ROUTE');
this.logger.info(`/catalog - ON GET SUMMARY RATING ROUTE`);
//const { id } = params;
//
@@ -222,7 +285,10 @@ export class CatalogController {
@Get('data-comment')
async getDataComment(@Body() body) {
console.log(`/catalog`, 'ON GET DATA COMMENT ROUTE');
this.logger.info(`/catalog - ON GET DATA COMMENT ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const res = await this.catalogService.getDataComment(body);
@@ -231,7 +297,10 @@ export class CatalogController {
@Post('data-comment')
async createDataComment(@Body() body) {
console.log(`/catalog`, 'ON GET DATA COMMENT ROUTE');
this.logger.info(`/catalog - ON GET DATA COMMENT ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const res = await this.catalogService.createDataComment(body);
@@ -240,7 +309,10 @@ export class CatalogController {
@Get('data-review')
async getDataReview(@Body() body, @Query() params) {
console.log(`/catalog`, 'ON GET DATA REVIEW ROUTE');
this.logger.info(`/catalog - ON GET DATA REVIEW ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const res = await this.catalogService.getDataReview(body, params);
@@ -249,7 +321,10 @@ export class CatalogController {
@Post('tags')
async createTags(@Body() body) {
console.log(`/catalog`, 'ON CREATE TAG ROUTE');
this.logger.info(`/catalog - ON CREATE TAG ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const res = await this.catalogService.createTags(body);
@@ -258,7 +333,10 @@ export class CatalogController {
@Get('tags')
async findAllTags(@Body() body) {
console.log(`/catalog`, 'ON FIND ALL TAGS ROUTE');
this.logger.info(`/catalog - ON FIND ALL TAGS ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const res = await this.catalogService.findAllTags(body);
@@ -267,7 +345,10 @@ export class CatalogController {
@Delete('tags/:id')
async deleteTags(@Param() params, @Body() body) {
console.log(`/catalog`, 'ON DELETE TAG ROUTE');
this.logger.info(`/catalog - ON DELETE TAG ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const { id } = params;
const res = await this.catalogService.deleteTags(id, body);
@@ -277,7 +358,10 @@ export class CatalogController {
@Post('table-tags')
async createTableTags(@Body() body) {
console.log(`/catalog`, 'ON CREATE TABLE TAG ROUTE');
this.logger.info(`/catalog - ON CREATE TABLE TAG ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const res = await this.catalogService.createTableTags(body);
@@ -286,7 +370,10 @@ export class CatalogController {
@Get('table-tags')
async getAllTableTags(@Body() body) {
console.log(`/catalog`, 'ON GET ALL TABLE TAGS ROUTE');
this.logger.info(`/catalog - ON GET ALL TABLE TAGS ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const res = await this.catalogService.findAllTableTags(body);
@@ -295,7 +382,10 @@ export class CatalogController {
@Delete('table-tags/:id')
async deleteTableTags(@Param() params, @Body() body) {
console.log(`/catalog`, 'ON CREATE TABLE TAGS ROUTE');
this.logger.info(`/catalog - ON CREATE TABLE TAGS ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const { id } = params;
const res = await this.catalogService.deleteTableTags(id, body);
@@ -305,7 +395,10 @@ export class CatalogController {
@Get('table-rules')
async getTableRules(@Body() body) {
console.log(`/catalog`, 'ON GET TABLE RULES ROUTE');
this.logger.info(`/catalog - ON GET TABLE RULES ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const res = await this.catalogService.getTableRules(body);
@@ -314,7 +407,10 @@ export class CatalogController {
@Delete('table-rules/:id')
async deleteTableRules(@Param() params, @Body() body) {
console.log(`/catalog`, 'ON DELETE TABLE RULES ROUTE');
this.logger.info(`/catalog - ON DELETE TABLE RULES ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const { id } = params;
const res = await this.catalogService.deleteTableRules(id, body);
-1
View File
@@ -46,7 +46,6 @@ class CatalogService {
const { data } = await axios.get(
`${nimbusUrl}/api/catalog/dashboard-metabase/${id}`,
);
console.log(data);
// const [, path] = data.iframe_url.split('.dadosfera');
// const host = `httpss://metabase-${body.info.customer.toLowerCase()}.dadosfera.ai`;
+19 -10
View File
@@ -10,6 +10,7 @@ import {
Query,
UploadedFile,
UseInterceptors,
Inject,
} from '@nestjs/common';
import { FileInterceptor } from '@nestjs/platform-express';
import { ApiBearerAuth, ApiConsumes, ApiTags } from '@nestjs/swagger';
@@ -21,12 +22,20 @@ import { GetAllDto } from './dtos/get-all';
import { RemoveTagDto } from './dtos/remove-tag';
import { UpdateDto } from './dtos/update';
import { UploadFileDto } from './dtos/upload-file';
import { DadosferaLogger } from 'dadosfera-logs';
@ApiTags('connectors')
@ApiBearerAuth()
@Controller('connectors')
export class ConnectorController {
constructor(private connectorClientService: ConnectorClientService) {}
logger: any;
constructor(
@Inject(DadosferaLogger)
dadosferaLogger: DadosferaLogger,
private connectorClientService: ConnectorClientService,
) {
this.logger = dadosferaLogger.logger;
}
@Post()
@ApiConsumes('multipart/form-data')
@@ -35,7 +44,7 @@ export class ConnectorController {
@UploadedFile() file,
@Body() body: CreateConnectorDto,
) {
console.log(`/upload`, 'Upload Connector Route');
this.logger.info('/upload - Upload Connector Route');
const response = await this.connectorClientService.uploadConnector({
file,
@@ -49,7 +58,7 @@ export class ConnectorController {
@ApiConsumes('multipart/form-data')
@UseInterceptors(FileInterceptor('file'))
async uploadFile(@UploadedFile() file, @Body() { name }: UploadFileDto) {
console.log(`/upload`, 'Upload Connector Route');
this.logger.info('/upload - Upload Connector Route');
const response = await this.connectorClientService.uploadFile({
file,
@@ -61,7 +70,7 @@ export class ConnectorController {
@Get()
async getAllConnectors(@Query() queries: GetAllDto) {
console.log(`/upload`, 'Upload Connector Route');
this.logger.info('/upload - Upload Connector Route');
const { search, ...filters } = queries;
@@ -88,7 +97,7 @@ export class ConnectorController {
@Param('plugin') plugin: string,
@Query('version') version: string,
) {
console.log(`/upload`, 'Upload Connector Route');
this.logger.info('/upload - Upload Connector Route');
const pluginId = `${plugin}-${version}`;
@@ -107,7 +116,7 @@ export class ConnectorController {
@Param('plugin') plugin: string,
@Query('version') version: string,
) {
console.log(`/upload`, 'Upload Connector Route');
this.logger.info('/upload - Upload Connector Route');
const pluginId = `${plugin}-${version}`;
@@ -127,7 +136,7 @@ export class ConnectorController {
@Param('plugin') plugin: string,
@Body() body: UpdateDto,
) {
console.log(`/upload`, 'Upload Connector Route');
this.logger.info('/upload - Upload Connector Route');
const changes = body;
@@ -147,7 +156,7 @@ export class ConnectorController {
@Param('plugin') plugin: string,
@Body() body: AddTagDto,
) {
console.log(`/upload`, 'Upload Connector Route');
this.logger.info('/upload - Upload Connector Route');
const { tags } = body;
@@ -173,7 +182,7 @@ export class ConnectorController {
@Param('plugin') plugin: string,
@Body() body: RemoveTagDto,
) {
console.log(`/upload`, 'Upload Connector Route');
this.logger.info('/upload - Upload Connector Route');
const { tags } = body;
const remove = tags;
@@ -200,7 +209,7 @@ export class ConnectorController {
@Param('plugin') plugin: string,
@Body() { version }: DeleteConnectorDto,
) {
console.log(`/upload`, 'Upload Connector Route');
this.logger.info('/upload - Upload Connector Route');
const response: any = await this.connectorClientService.deleteConnector(
plugin,
+10 -3
View File
@@ -1,15 +1,22 @@
import { Controller, Get } from '@nestjs/common';
import { Controller, Get, Inject } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import { HealthService } from './health.service';
import { DadosferaLogger } from 'dadosfera-logs';
@ApiTags('Health')
@Controller('health')
export class HealthController {
constructor(private readonly healthService: HealthService) {}
logger: any;
constructor(
@Inject(DadosferaLogger)
dadosferaLogger: DadosferaLogger,
private readonly healthService: HealthService,
) {
this.logger = dadosferaLogger.logger;
}
@Get()
check() {
console.log(`/health`, 'check');
return this.healthService.check();
}
}
@@ -1,5 +0,0 @@
describe('PipelinesGrpcServerService', () => {
it('should be defined', () => {
expect(2 + 2).toBe(4);
});
});
+9 -2
View File
@@ -1,9 +1,16 @@
import { Injectable } from '@nestjs/common';
import { Inject, Injectable } from '@nestjs/common';
import { DadosferaLogger } from 'dadosfera-logs';
@Injectable()
export class HealthService {
logger: any;
constructor(
@Inject(DadosferaLogger)
dadosferaLogger: DadosferaLogger,
) {
this.logger = dadosferaLogger.logger;
}
check() {
console.log('HEALTH');
return { message: 'Ok' };
}
}
+9
View File
@@ -1,4 +1,5 @@
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
import { Info } from 'src/clients/inputs/interfaces';
import { Method } from 'axios';
export class InputModel {
@@ -149,6 +150,8 @@ export class TestConnectionGetColumnsReq {
credentials: CredentialsJdbc;
@ApiPropertyOptional()
id: string;
@ApiPropertyOptional()
info: Info;
}
export class TestConnectionGetColumnsRes {
@ApiProperty()
@@ -160,6 +163,8 @@ export class TestConnectionReq {
plugin: string;
@ApiProperty()
credentials: CredentialsJdbc;
@ApiPropertyOptional()
info: Info;
}
export class TestConnectionRes {
@ApiProperty()
@@ -182,6 +187,8 @@ export class CreateInputReq {
name: string;
@ApiPropertyOptional()
options: InputOptions;
@ApiPropertyOptional()
info: Info;
}
export class Input {
@@ -203,4 +210,6 @@ export class Input {
created_at: string;
@ApiProperty()
updated_at: string;
@ApiPropertyOptional()
info: Info;
}
+41 -13
View File
@@ -3,11 +3,13 @@ import {
Controller,
Delete,
Get,
Inject,
Param,
Patch,
Post,
} from '@nestjs/common';
import { InputsService } from './inputs.service';
import { DadosferaLogger } from 'dadosfera-logs';
import { InputsClientService } from 'src/clients/inputs/client.service';
import { UpdateInputRequest } from 'src/clients/inputs/interfaces';
import { Permissions } from '../../authentication/permissions.enum';
@@ -27,7 +29,7 @@ import {
@ApiTags('inputs')
@Controller('inputs')
@AuthenticateCondition((req, user) => {
let action;
let action: any;
switch (req.method) {
case 'POST':
@@ -57,7 +59,13 @@ import {
})
export class InputsController {
inputService: InputsService;
constructor(private inputsClientService: InputsClientService) {
logger: any;
constructor(
@Inject(DadosferaLogger)
dadosferaLogger: DadosferaLogger,
private inputsClientService: InputsClientService,
) {
this.logger = dadosferaLogger.logger;
this.inputService = new InputsService(this.inputsClientService);
}
@@ -75,7 +83,10 @@ export class InputsController {
@Post('/test-connection')
@ApiOkResponse({ type: TestConnectionRes })
async testConnection(@Body() data: TestConnectionReq) {
console.log(`/test-connection`, 'ON TEST CONNECTION ROUTE');
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);
@@ -85,9 +96,12 @@ export class InputsController {
@Post('/test-connection/get-columns')
@ApiOkResponse({ type: TestConnectionGetColumnsRes })
async getColumns(@Body() data: TestConnectionGetColumnsReq) {
console.log(
`/test-connection/get-columns`,
'ON TEST CONNECTION GET COLUMNS ROUTE',
this.logger.info(
`/test-connection/get-columns - ON TEST CONNECTION GET COLUMNS ROUTE`,
{
user: data.info.user_id,
customer: data.info.customer,
},
);
const response = await this.inputService.getColumns(data);
@@ -98,7 +112,10 @@ export class InputsController {
@Post()
@ApiOkResponse({ type: Input })
async create(@Body() createInputDto: CreateInputReq) {
console.log(`/input`, 'ON CREATE ROUTE');
this.logger.info(`/input - ON CREATE ROUTE`, {
user: createInputDto.info.user_id,
customer: createInputDto.info.customer,
});
const response = await this.inputService.create(createInputDto);
@@ -109,7 +126,7 @@ export class InputsController {
@ApiOkResponse({ type: Input })
async reCreate(@Param('id') id: string, @Body() input: CreateInputReq) {
if (!input.id) input.id = id;
console.log(`POST /${input.id}`, 'ON RECREATE ROUTE');
this.logger.info(`POST /${id}`, 'ON RECREATE ROUTE');
const response = await this.inputService.reCreate(input);
@@ -118,7 +135,10 @@ export class InputsController {
@Get()
async findAll(@Body() body) {
console.log(`/input`, 'ON FIND ALL ROUTE');
this.logger.info(`/input - ON FIND ALL ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const response = await this.inputService.findAll(body);
@@ -128,7 +148,10 @@ export class InputsController {
@Get('/:id')
async findOne(@Body() body, @Param() params) {
const { id } = params;
console.log(`/input/${id}`, 'ON FIND ONE ROUTE');
this.logger.info(`/input/${id} - ON FIND ONE ROUTE`, {
user: body.info.user_id,
customer: body.info.customer,
});
const response = await this.inputService.findOne({ id, ...body });
@@ -139,10 +162,12 @@ export class InputsController {
async update(@Body() updateInputDto: UpdateInputRequest, @Param() params) {
const { id } = params;
const { info } = updateInputDto;
this.logger.info(`/input/${id} - ON UPDATE ROUTE`, {
user: info.user_id,
customer: info.customer_id,
});
delete updateInputDto.info;
console.log(`/input/${id}`, 'ON UPDATE ROUTE');
const response = await this.inputService.update(id, updateInputDto, info);
return response;
@@ -152,7 +177,10 @@ export class InputsController {
async delete(@Body() data, @Param() params) {
const { id } = params;
console.log(`/input/${id}`, 'ON DELETE ROUTE');
this.logger.info(`/input/${id} - ON DELETE ROUTE`, {
user: data.info.user_id,
customer: data.info.customer,
});
const response = await this.inputService.remove({ id, ...data });
@@ -1,5 +0,0 @@
describe('PipelinesGrpcServerService', () => {
it('should be defined', () => {
expect(2 + 2).toBe(4);
});
});
+1 -1
View File
@@ -7,7 +7,7 @@ import { IIdRequest, Info } from 'src/clients/inputs/interfaces';
@Injectable()
export class InputsService {
constructor(private inputClient: InputsClientService) {}
constructor(private inputClient: InputsClientService) { }
secondsInADay = 60 * 60 * 24;
secondsInAnHour = 60 * 60;
@@ -1,12 +1,15 @@
import {
Profile,
Strategy,
StrategyOptionWithRequest,
StrategyOption,
VerifyFunction,
} from 'passport-facebook';
import { PassportStrategy } from '@nestjs/passport';
import { Inject, Injectable } from '@nestjs/common';
import { OauthSecrets } from 'src/utils/OauthSecrets';
import { Request } from 'express';
import { ParamsDictionary } from 'express-serve-static-core';
import { ParsedQs } from 'qs';
@Injectable()
export class FacebookStrategy extends PassportStrategy(Strategy) {
@@ -14,19 +17,29 @@ export class FacebookStrategy extends PassportStrategy(Strategy) {
@Inject('OAUTH_SECRETS')
private readonly oauthSecrets: OauthSecrets,
) {
const options: StrategyOptionWithRequest = {
const options: StrategyOption = {
clientID: oauthSecrets.facebook.client_id,
clientSecret: oauthSecrets.facebook.client_secret,
callbackURL: oauthSecrets.facebook.redirect_uri,
passReqToCallback: true,
};
const verify: VerifyFunction = (
accessToken: string,
refreshToken: string,
profile: Profile,
done: (error: any, user?: any, info?: any) => void,
) => done(null, profile, { accessToken, refreshToken });
) => {
return done(null, profile, { accessToken, refreshToken });
};
super(options, verify);
}
authenticate(
req: Request<ParamsDictionary, any, any, ParsedQs, Record<string, any>>,
options?: any,
): void {
const { customer_id } = req.query;
options.state = customer_id;
options.scope = 'ads_read ads_management';
super.authenticate(req, options);
}
}
+33 -7
View File
@@ -3,6 +3,7 @@ import {
Controller,
Delete,
Get,
Inject,
Param,
Post,
Put,
@@ -13,6 +14,7 @@ import { OutputsClientService } from 'src/clients/outputs/client.service';
import { AuthenticateCondition } from 'src/authentication/authentication.decorator';
import { Permissions } from '../../authentication/permissions.enum';
import { OutputsService } from './outputs.service';
import { DadosferaLogger } from 'dadosfera-logs';
@ApiTags('Outputs')
@Controller('outputs')
@@ -35,11 +37,21 @@ import { OutputsService } from './outputs.service';
return user.permissions.includes(Permissions.OUTPUT[action].seqid);
})
export class OutputsController {
constructor(private outputsClientService: OutputsClientService) { }
logger: any;
constructor(
@Inject(DadosferaLogger)
dadosferaLogger: DadosferaLogger,
private outputsClientService: OutputsClientService,
) {
this.logger = dadosferaLogger.logger;
}
@Post()
async create(@Body() createOutputDto) {
console.log(process.env.DEV_URL + `/output`, 'ON CREATE ROUTE');
this.logger.info(process.env.DEV_URL + `/output - ON CREATE ROUTE`, {
user: createOutputDto.info.user_id,
customer: createOutputDto.info.customer,
});
const outputService = new OutputsService(this.outputsClientService);
const response = await outputService.create(createOutputDto);
@@ -49,7 +61,10 @@ export class OutputsController {
@Get()
async findAll(@Body() data) {
console.log(process.env.DEV_URL + `/output`, 'ON Find All ROUTE');
this.logger.info(process.env.DEV_URL + `/output - ON Find All ROUTE`, {
user: data.info.user_id,
customer: data.info.customer,
});
const outputService = new OutputsService(this.outputsClientService);
const response = await outputService.findAll(data);
@@ -60,7 +75,13 @@ export class OutputsController {
@Get('/:id')
async findOne(@Body() data, @Param() params) {
const { id } = params;
console.log(process.env.DEV_URL + `/output/${id}`, 'ON Find One ROUTE');
this.logger.info(
process.env.DEV_URL + `/output/${id} - ON Find One ROUTE`,
{
user: data.info.user_id,
customer: data.info.customer,
},
);
const outputService = new OutputsService(this.outputsClientService);
const response = await outputService.findOne({ id, ...data });
@@ -72,10 +93,12 @@ export class OutputsController {
async update(@Payload() updateOutputDto, @Param() params) {
const { id } = params;
const { info } = updateOutputDto;
this.logger.info(process.env.DEV_URL + `/output/${id} - ON UPDATE ROUTE`, {
user: updateOutputDto.info.user_id,
customer: updateOutputDto.info.customer,
});
delete updateOutputDto.info;
console.log(process.env.DEV_URL + `/output/${id}`, 'ON UPDATE ROUTE');
const outputService = new OutputsService(this.outputsClientService);
const response = await outputService.update(id, updateOutputDto, info);
@@ -85,7 +108,10 @@ export class OutputsController {
@Delete(':id')
async delete(@Body() data, @Param() params) {
const { id } = params;
console.log(process.env.DEV_URL + `/output/${id}`, 'ON DELETE ROUTE');
this.logger.info(process.env.DEV_URL + `/output/${id} - ON DELETE ROUTE`, {
user: data.info.user_id,
customer: data.info.customer,
});
const outputService = new OutputsService(this.outputsClientService);
const response = await outputService.remove({ id, ...data });
@@ -1,5 +0,0 @@
describe('PipelinesGrpcServerService', () => {
it('should be defined', () => {
expect(2 + 2).toBe(4);
});
});
@@ -0,0 +1,21 @@
import { Module } from '@nestjs/common';
import { ClientsModule } from '@nestjs/microservices';
import { DadosferaLogger } from 'dadosfera-logs';
import { PermissionsClientService } from './permissions.service';
import { DucClient } from '../../clients/duc/client.config';
const ducClient = new DucClient();
@Module({
imports: [
ClientsModule.register([
{
name: 'DUC_PACKAGE',
...ducClient.config(),
},
]),
],
providers: [PermissionsClientService, DadosferaLogger],
})
export class PermissionsModule {}
@@ -0,0 +1,70 @@
import {
OnApplicationBootstrap,
OnModuleInit,
Inject,
Injectable,
} from '@nestjs/common';
import { ClientGrpc } from '@nestjs/microservices';
import { lastValueFrom } from 'rxjs';
import { ProtoServices } from 'protospack-v2/dist/lib/Duc';
import { PermissionsProtoService as PermissionsServiceInterface } from 'protospack-v2/dist/lib/Duc/interfaces/write-service';
import { InjectPermissionsRequest } from 'protospack-v2/dist/lib/Duc/interfaces/messages';
import { DadosferaLogger } from 'dadosfera-logs';
import { Permissions } from '../../authentication/permissions.enum';
import ErrorBuilder from '../../utils/ErrorBuilder';
@Injectable()
export class PermissionsClientService
implements OnModuleInit, OnApplicationBootstrap
{
logger: any;
private permissionsService: PermissionsServiceInterface;
constructor(
@Inject(DadosferaLogger)
dadosferaLogger: DadosferaLogger,
@Inject('DUC_PACKAGE') private readonly grpcClient: ClientGrpc,
) {
this.logger = dadosferaLogger.logger;
}
onModuleInit() {
this.permissionsService =
this.grpcClient.getService<PermissionsServiceInterface>(
ProtoServices.PermissionsProtoService,
);
}
// internally used to send permissions to duc on microservice startup
async onApplicationBootstrap() {
this.logger.info('sending permissions to DUC...');
const permissions = Object.values(Permissions).flatMap((namespace) =>
Object.values(namespace),
);
return this.injectPermissions({
permissions,
}).catch((err: ErrorBuilder) => {
if (
err.code === 'No connection established' &&
process.env.LOCAL_ENV === 'true'
) {
return this.logger.info(
"couldn't connect to DUC. suppresing in local env",
);
}
throw err;
});
}
async injectPermissions({ permissions }: InjectPermissionsRequest) {
this.logger.info('InjectPermissions');
return lastValueFrom(
this.permissionsService.InjectPermissions({ permissions }),
);
}
}
+33 -15
View File
@@ -3,6 +3,7 @@ import {
Controller,
Delete,
Get,
Inject,
Param,
Post,
Put,
@@ -12,6 +13,7 @@ import { PipelinesClientService } from 'src/clients/pipelines/client.service';
import { AuthenticateCondition } from 'src/authentication/authentication.decorator';
import { Permissions } from '../../authentication/permissions.enum';
import { PipelinesService } from './pipelines.service';
import { DadosferaLogger } from 'dadosfera-logs';
@ApiTags('Pipelines')
@Controller('pipelines')
@@ -34,16 +36,26 @@ import { PipelinesService } from './pipelines.service';
return user.permissions.includes(Permissions.PIPELINE[action].seqid);
})
export class PipelinesController {
constructor(private pipelinesClientService: PipelinesClientService) {}
logger: any;
constructor(
@Inject(DadosferaLogger)
dadosferaLogger: DadosferaLogger,
private pipelinesClientService: PipelinesClientService,
) {
this.logger = dadosferaLogger.logger;
}
@Post('start/:id')
async activate(@Param() params, @Body() body) {
const { id } = params;
const { info } = body;
console.log(
process.env.DEV_URL + `/pipeline/start/${id}`,
'ON START PIPELINE ROUTE',
this.logger.info(
process.env.DEV_URL + `/pipeline/start/${id} - ON START PIPELINE ROUTE`,
{
user: body.info.user_id,
customer: body.info.customer,
},
);
const pipelineService = new PipelinesService(this.pipelinesClientService);
@@ -57,9 +69,12 @@ export class PipelinesController {
const { id } = params;
body.id = id;
console.log(
process.env.DEV_URL + `/pipeline/${id}`,
'ON GET PIPELINE STATUS ROUTE',
this.logger.info(
process.env.DEV_URL + `/pipeline/${id} - ON GET PIPELINE STATUS ROUTE`,
{
user: body.info.user_id,
customer: body.info.customer,
},
);
const pipelineService = new PipelinesService(this.pipelinesClientService);
@@ -71,9 +86,9 @@ export class PipelinesController {
@Get(':id/:details')
async getPipelineLogs(@Param() params) {
const { id, details } = params;
console.log(
process.env.DEV_URL + `/pipeline/${id}`,
'ON GET PIPELINE LOGS ROUTE',
this.logger.info(
process.env.DEV_URL + `/pipeline/${id} - ON GET PIPELINE LOGS ROUTE`,
{},
);
const pipelineService = new PipelinesService(this.pipelinesClientService);
@@ -84,7 +99,7 @@ export class PipelinesController {
@Post()
async create(@Body() createPipelineDto) {
console.log(process.env.DEV_URL + `/pipelines`, 'ON CREATE ROUTE');
this.logger.info(process.env.DEV_URL + `/pipelines ON CREATE ROUTE`);
const pipelineService = new PipelinesService(this.pipelinesClientService);
const response = await pipelineService.create(createPipelineDto);
@@ -94,7 +109,10 @@ export class PipelinesController {
@Get()
async findAll(@Body() data) {
console.log(process.env.DEV_URL + `/pipeline`, 'ON Find All ROUTE');
this.logger.info(process.env.DEV_URL + `/pipeline ON Find All ROUTE`, {
user: data.info.user_id,
customer: data.info.customer,
});
const pipelineService = new PipelinesService(this.pipelinesClientService);
const response = await pipelineService.findAll(data);
@@ -105,7 +123,7 @@ export class PipelinesController {
@Get('/:id')
async findOne(@Body() data, @Param() params) {
const { id } = params;
console.log(process.env.DEV_URL + `/pipeline/${id}`, 'ON Find One ROUTE');
this.logger.info(process.env.DEV_URL + `/pipeline/${id} ON Find One ROUTE`);
const pipelineService = new PipelinesService(this.pipelinesClientService);
const response = await pipelineService.findOne({ id, ...data });
@@ -119,7 +137,7 @@ export class PipelinesController {
const { info } = updatePipelineDto;
delete updatePipelineDto.info;
console.log(process.env.DEV_URL + `/pipeline/${id}`, 'ON UPDATE ROUTE');
this.logger.info(process.env.DEV_URL + `/pipeline/${id} ON UPDATE ROUTE`);
const pipelineService = new PipelinesService(this.pipelinesClientService);
const response = await pipelineService.update(id, updatePipelineDto, info);
@@ -130,7 +148,7 @@ export class PipelinesController {
@Delete(':id')
async delete(@Body() data, @Param() params) {
const { id } = params;
console.log(process.env.DEV_URL + `/pipeline/${id}`, 'ON DELETE ROUTE');
this.logger.info(process.env.DEV_URL + `/pipeline/${id} ON DELETE ROUTE`);
const pipelineService = new PipelinesService(this.pipelinesClientService);
const response = await pipelineService.remove({ id, ...data });
@@ -1,5 +0,0 @@
describe('PipelinesGrpcServerService', () => {
it('should be defined', () => {
expect(2 + 2).toBe(4);
});
});
@@ -3,6 +3,7 @@ import {
Controller,
Delete,
Get,
Inject,
Param,
Post,
Put,
@@ -14,6 +15,7 @@ import { IIdRequest } from 'src/clients/transformations/interfaces';
import { AuthenticateCondition } from 'src/authentication/authentication.decorator';
import { Permissions } from '../../authentication/permissions.enum';
import { TransformationsService } from './transformations.service';
import { DadosferaLogger } from 'dadosfera-logs';
@ApiTags('Transformations')
@Controller('transformations')
@@ -36,13 +38,24 @@ import { TransformationsService } from './transformations.service';
return user.permissions.includes(Permissions.TRANSFORMATIONS[action].seqid);
})
export class TransformationsController {
logger: any;
constructor(
@Inject(DadosferaLogger)
dadosferaLogger: DadosferaLogger,
private transformationsClientService: TransformationsClientService,
) {}
) {
this.logger = dadosferaLogger.logger;
}
@Post()
async create(@Body() createTransformationDto) {
console.log(process.env.DEV_URL + `/transformation`, 'ON CREATE ROUTE');
this.logger.info(
process.env.DEV_URL + `/transformation - ON CREATE ROUTE`,
{
user: createTransformationDto.info.user_id,
customer: createTransformationDto.info.customer,
},
);
const transformationService = new TransformationsService(
this.transformationsClientService,
@@ -56,7 +69,13 @@ export class TransformationsController {
@Get()
async findAll(@Body() data: IIdRequest) {
console.log(process.env.DEV_URL + `/transformation`, 'ON Find All ROUTE');
this.logger.info(
process.env.DEV_URL + `/transformation - ON Find All ROUTE`,
{
user: data.info.user_id,
customer: data.info.customer_id,
},
);
const transformationService = new TransformationsService(
this.transformationsClientService,
@@ -69,9 +88,12 @@ export class TransformationsController {
@Get('/:id')
async findOne(@Body() data, @Param() params) {
const { id } = params;
console.log(
process.env.DEV_URL + `/transformation/${id}`,
'ON Find One ROUTE',
this.logger.info(
process.env.DEV_URL + `/transformation/${id} - ON Find One ROUTE`,
{
user: data.info.user_id,
customer: data.info.customer,
},
);
const transformationService = new TransformationsService(
@@ -85,9 +107,12 @@ export class TransformationsController {
@Put(':id')
async update(@Payload() updateTransformationDto, @Param() params) {
const { id } = params;
console.log(
process.env.DEV_URL + `/transformation/${id}`,
'ON UPDATE ROUTE',
this.logger.info(
process.env.DEV_URL + `/transformation/${id} - ON UPDATE ROUTE`,
{
user: updateTransformationDto.info.user_id,
customer: updateTransformationDto.info.customer,
},
);
const transformationService = new TransformationsService(
@@ -104,9 +129,12 @@ export class TransformationsController {
@Delete(':id')
async delete(@Body() data, @Param() params) {
const { id } = params;
console.log(
process.env.DEV_URL + `/transformation/${id}`,
'ON DELETE ROUTE',
this.logger.info(
process.env.DEV_URL + `/transformation/${id} - ON DELETE ROUTE`,
{
user: data.info.user_id,
customer: data.info.customer,
},
);
const transformationService = new TransformationsService(
@@ -1,5 +0,0 @@
describe('PipelinesGrpcServerService', () => {
it('should be defined', () => {
expect(2 + 2).toBe(4);
});
});