mirror of
https://github.com/dadosfera/maestro.git
synced 2026-10-01 01:59:08 +00:00
170 lines
3.8 KiB
TypeScript
170 lines
3.8 KiB
TypeScript
import {
|
|
Body,
|
|
Controller,
|
|
Delete,
|
|
Get,
|
|
Inject,
|
|
Param,
|
|
Post,
|
|
Put,
|
|
} from '@nestjs/common';
|
|
import { ApiTags } from '@nestjs/swagger';
|
|
import {
|
|
AuthenticateCondition,
|
|
Authenticated,
|
|
} from 'src/authentication/authentication.decorator';
|
|
import { PERMISSIONS_GROUPS } from '../../authentication/permissions.enum';
|
|
import { PipelinesService } from './pipelines.service';
|
|
import { DadosferaLogger } from '@dadosfera/dadosfera-logs';
|
|
import { RequestUser, User } from 'src/authentication/user.decorator';
|
|
|
|
@ApiTags('Pipelines')
|
|
@Controller('pipelines')
|
|
@Authenticated()
|
|
@AuthenticateCondition((req, user) => {
|
|
let action;
|
|
|
|
switch (req.method) {
|
|
case 'POST':
|
|
action = 'CREATE';
|
|
break;
|
|
|
|
case 'PUT':
|
|
action = 'UPDATE';
|
|
break;
|
|
|
|
default:
|
|
action = req.method;
|
|
}
|
|
|
|
return user.permissions.includes(
|
|
PERMISSIONS_GROUPS.PIPELINE.permissions[action].seqid,
|
|
);
|
|
})
|
|
export class PipelinesController {
|
|
logger: DadosferaLogger;
|
|
constructor(
|
|
@Inject(DadosferaLogger)
|
|
dadosferaLogger: DadosferaLogger,
|
|
private pipelineService: PipelinesService,
|
|
) {
|
|
this.logger = dadosferaLogger.logger;
|
|
}
|
|
|
|
@Post('start/:id')
|
|
async activate(@Param() params, @Body() body) {
|
|
const { id } = params;
|
|
const { info } = body;
|
|
|
|
this.logger.info(
|
|
process.env.DEV_URL + `/pipeline/start/${id} - ON START PIPELINE ROUTE`,
|
|
{
|
|
user: body.info.user_id,
|
|
customer: body.info.customer,
|
|
},
|
|
);
|
|
|
|
const response = await this.pipelineService.runPipeline({ id, info });
|
|
|
|
return response;
|
|
}
|
|
|
|
@Get(':id/status')
|
|
async getPipelineStatus(@Body() body, @Param() params) {
|
|
const { id } = params;
|
|
body.id = id;
|
|
|
|
this.logger.info(
|
|
process.env.DEV_URL + `/pipeline/${id} - ON GET PIPELINE STATUS ROUTE`,
|
|
{
|
|
user: body.info.user_id,
|
|
customer: body.info.customer,
|
|
},
|
|
);
|
|
|
|
const response = await this.pipelineService.getPipelineStatus(body);
|
|
|
|
return response;
|
|
}
|
|
|
|
@Get(':id/:details')
|
|
async getPipelineLogs(@Param() params) {
|
|
const { id, details } = params;
|
|
this.logger.info(
|
|
process.env.DEV_URL + `/pipeline/${id} - ON GET PIPELINE LOGS ROUTE`,
|
|
{},
|
|
);
|
|
|
|
const response = await this.pipelineService.getPipelineLogsMessages(
|
|
id,
|
|
details,
|
|
);
|
|
|
|
return response;
|
|
}
|
|
|
|
@Post()
|
|
async create(@Body() createPipelineDto) {
|
|
this.logger.info(process.env.DEV_URL + `/pipelines ON CREATE ROUTE`);
|
|
|
|
const response = await this.pipelineService.create(createPipelineDto);
|
|
|
|
return response;
|
|
}
|
|
|
|
@Get()
|
|
async findAll(@User() user: RequestUser) {
|
|
this.logger.info(process.env.DEV_URL + `/pipeline ON Find All ROUTE`, {
|
|
user: user.user_id,
|
|
customer: user.customer_id,
|
|
});
|
|
|
|
const { customer_id, user_id, customer_name } = user;
|
|
|
|
const response = await this.pipelineService.findAll({
|
|
customer_name,
|
|
customer_id,
|
|
user_id,
|
|
});
|
|
|
|
return response;
|
|
}
|
|
|
|
@Get('/:id')
|
|
async findOne(@Body() data, @Param() params) {
|
|
const { id } = params;
|
|
this.logger.info(process.env.DEV_URL + `/pipeline/${id} ON Find One ROUTE`);
|
|
|
|
const response = await this.pipelineService.findOne({ id, ...data });
|
|
|
|
return response;
|
|
}
|
|
|
|
@Put(':id')
|
|
async update(@Body() updatePipelineDto, @Param() params) {
|
|
const { id } = params;
|
|
const { info } = updatePipelineDto;
|
|
delete updatePipelineDto.info;
|
|
|
|
this.logger.info(process.env.DEV_URL + `/pipeline/${id} ON UPDATE ROUTE`);
|
|
|
|
const response = await this.pipelineService.update(
|
|
id,
|
|
updatePipelineDto,
|
|
info,
|
|
);
|
|
|
|
return response;
|
|
}
|
|
|
|
@Delete(':id')
|
|
async delete(@Body() data, @Param() params) {
|
|
const { id } = params;
|
|
this.logger.info(process.env.DEV_URL + `/pipeline/${id} ON DELETE ROUTE`);
|
|
|
|
const response = await this.pipelineService.remove({ id, ...data });
|
|
|
|
return response;
|
|
}
|
|
}
|