FIX: Better error handling on pipeline create

This commit is contained in:
Gabriel Rosa
2022-06-28 12:22:00 -03:00
parent e1d0aa00f5
commit 9d9d903335
3 changed files with 25 additions and 37 deletions
+2 -1
View File
@@ -5,6 +5,7 @@ import {
HttpStatus,
NotFoundException,
InternalServerErrorException,
BadRequestException,
} from '@nestjs/common';
import { ClientGrpc } from '@nestjs/microservices';
import {
@@ -64,7 +65,7 @@ export class InputsClientService implements OnModuleInit {
const structReturn = await lastValueFrom(
this.inputService.Create(grpcPayload),
).catch((err) => {
).catch((err: { details: string }) => {
if (err.details === 'Item Not found!') {
throw new NotFoundException('Input not found');
}
+17 -25
View File
@@ -1,9 +1,16 @@
import { HttpException, Inject, OnModuleInit } from '@nestjs/common';
import {
BadRequestException,
HttpException,
Inject,
InternalServerErrorException,
OnModuleInit,
} from '@nestjs/common';
import { ClientGrpc, Payload } from '@nestjs/microservices';
import {
PipelineServicesNames,
PipelinesServiceInterface,
} from '@victorradael/protospack';
import { lastValueFrom } from 'rxjs';
import {
objectCamelToSnake,
objectSnakeToCamel,
@@ -30,30 +37,15 @@ export class PipelinesClientService implements OnModuleInit {
async create(@Payload() createPipelineDto: ICreatePipelineDto) {
console.log('PipelinesClientService', 'Create');
const createPipelineResponse = await new Promise((resolve, reject) => {
this.pipelineService
.Create(objectSnakeToCamel(createPipelineDto))
.subscribe({
next(x) {
resolve(x);
},
error(err) {
console.log('Observable Error');
reject(err);
},
complete() {
console.log('done');
},
});
})
.then((res) => res)
.catch((err) => {
if (err.details == 'Invalid Request') {
throw new HttpException(err.details, 400);
}
throw new HttpException(err.details, 500);
});
const createPipelineResponse = await lastValueFrom(
this.pipelineService.Create(objectSnakeToCamel(createPipelineDto)),
).catch((error: { details: string }) => {
if (error.details.includes('INVALID_REQUEST')) {
const [errorType, message] = error.details.split('|');
throw new BadRequestException(message);
}
throw new InternalServerErrorException(error.details);
});
return createPipelineResponse;
}
+6 -11
View File
@@ -17,19 +17,14 @@ export class PipelinesService {
}
async create(createPipelineDto) {
try {
const createPipelineResponse = await this.pipelineClient.create(
createPipelineDto,
);
const createPipelineResponse = await this.pipelineClient.create(
createPipelineDto,
);
const pipeline = objectCamelToSnake(createPipelineResponse);
this.adjustPayload(pipeline.pipeline);
const pipeline = objectCamelToSnake(createPipelineResponse);
this.adjustPayload(pipeline.pipeline);
return pipeline;
} catch (err) {
console.log(err);
throw new HttpException(err.message, HttpStatus.NOT_FOUND);
}
return pipeline;
}
async findOne(data: IIdRequest) {