mirror of
https://github.com/dadosfera/maestro.git
synced 2026-08-31 19:58:21 +00:00
163 lines
4.6 KiB
TypeScript
163 lines
4.6 KiB
TypeScript
import {
|
|
Body,
|
|
Controller,
|
|
HttpCode,
|
|
HttpStatus,
|
|
Inject,
|
|
Post,
|
|
UseFilters,
|
|
ValidationPipe,
|
|
} from '@nestjs/common';
|
|
import { ApiOkResponse, ApiTags } from '@nestjs/swagger';
|
|
import { User, RequestUser } from 'src/decorators/user.decorator';
|
|
import { ConnectionTestService } from './connection-test.service';
|
|
import {
|
|
ConnectionTestPingRes,
|
|
ConnectionTestPingReq,
|
|
ConnectionTestCredentialsReq,
|
|
ConnectionTestCredentialsRes,
|
|
ConnectionTestListSchemasReq,
|
|
ConnectionTestListSchemasRes,
|
|
ConnectionTestListTablesReq,
|
|
ConnectionTestListTablesRes,
|
|
GetTableMetadataRes,
|
|
GetTableMetadataReq,
|
|
RefreshCatalogReq,
|
|
RefreshCatalogRes,
|
|
RefreshCatalogStatusReq,
|
|
} from './dto/connection-test';
|
|
import { DadosferaLogger } from '@dadosfera/dadosfera-logs';
|
|
import { Authenticated, RequireModule } from 'src/decorators/authentication.decorator';
|
|
import { GrpcToHttpExceptionFilter } from 'src/error/grpc-to-http-exception.filter';
|
|
import { ApiInternalOnlyController } from 'src/decorators/swagger.decorator';
|
|
import { DADOSFERA_MODULES_KEYS } from 'src/authentication/permissions.enum';
|
|
|
|
@ApiInternalOnlyController()
|
|
@ApiTags('Connection Test')
|
|
@Controller('connection-test')
|
|
@UseFilters(new GrpcToHttpExceptionFilter())
|
|
@Authenticated()
|
|
@RequireModule(
|
|
DADOSFERA_MODULES_KEYS.COLLECT
|
|
)
|
|
export class ConnectionTestController {
|
|
logger: any;
|
|
constructor(
|
|
private connectionTestService: ConnectionTestService,
|
|
@Inject(DadosferaLogger)
|
|
dadosferaLogger: DadosferaLogger,
|
|
) {
|
|
this.logger = dadosferaLogger.logger;
|
|
}
|
|
|
|
@Post('ping')
|
|
@ApiOkResponse({ type: ConnectionTestPingRes })
|
|
@HttpCode(HttpStatus.OK)
|
|
async connectionTestPing(
|
|
@User() user: RequestUser,
|
|
@Body(new ValidationPipe()) body: ConnectionTestPingReq,
|
|
) {
|
|
this.logger.info('/connection-test/ping', {
|
|
user: user.user_id,
|
|
customer: user.customer_name,
|
|
});
|
|
return this.connectionTestService.connectionTestPing(body, user);
|
|
}
|
|
|
|
@Post('credentials')
|
|
@ApiOkResponse({ type: ConnectionTestCredentialsRes })
|
|
@HttpCode(HttpStatus.OK)
|
|
async connectionTestCredentials(
|
|
@User() user: RequestUser,
|
|
@Body() body: ConnectionTestCredentialsReq,
|
|
) {
|
|
this.logger.info('/connection-test/credentials', {
|
|
user: user.user_id,
|
|
customer: user.customer_name,
|
|
});
|
|
return this.connectionTestService.connectionTestCredentials(body, user);
|
|
}
|
|
|
|
@Post('schemas')
|
|
@ApiOkResponse({ type: ConnectionTestListSchemasRes })
|
|
@HttpCode(HttpStatus.OK)
|
|
async connectionTestListSchemas(
|
|
@User() user: RequestUser,
|
|
@Body(new ValidationPipe()) body: ConnectionTestListSchemasReq,
|
|
) {
|
|
this.logger.info('/connection-test/schemas', {
|
|
user: user.user_id,
|
|
customer: user.customer_name,
|
|
});
|
|
return this.connectionTestService.connectionTestListSchemas(
|
|
body,
|
|
user,
|
|
);
|
|
}
|
|
|
|
@Post('tables')
|
|
@ApiOkResponse({ type: ConnectionTestListTablesRes })
|
|
@HttpCode(HttpStatus.OK)
|
|
async connectionTestListTables(
|
|
@User() user: RequestUser,
|
|
@Body(new ValidationPipe()) body: ConnectionTestListTablesReq,
|
|
) {
|
|
this.logger.info('/connection-test/tables', {
|
|
user: user.user_id,
|
|
customer: user.customer_name,
|
|
});
|
|
return this.connectionTestService.connectionTestListTables(
|
|
body,
|
|
user,
|
|
);
|
|
}
|
|
|
|
@Post('table-metadata')
|
|
@ApiOkResponse({ type: GetTableMetadataRes })
|
|
@HttpCode(HttpStatus.OK)
|
|
async getTableMetadata(
|
|
@User() user: RequestUser,
|
|
@Body(new ValidationPipe()) body: GetTableMetadataReq,
|
|
) {
|
|
this.logger.info('/connection-test/table-metadata', {
|
|
user: user.user_id,
|
|
customer: user.customer_name,
|
|
});
|
|
return this.connectionTestService.getTableMetadata(
|
|
body,
|
|
user,
|
|
);
|
|
}
|
|
|
|
@Post('refresh-catalog')
|
|
@ApiOkResponse({ type: RefreshCatalogRes })
|
|
@HttpCode(HttpStatus.ACCEPTED)
|
|
async refreshCatalog(
|
|
@User() user: RequestUser,
|
|
@Body(new ValidationPipe()) body: RefreshCatalogReq,
|
|
) {
|
|
this.logger.info('/connection-test/refresh-catalog', {
|
|
user: user.user_id,
|
|
customer: user.customer_name,
|
|
connection: body.connection_id,
|
|
});
|
|
return this.connectionTestService.refreshCatalog(body, user);
|
|
}
|
|
|
|
@Post('refresh-catalog/status')
|
|
@ApiOkResponse({ type: RefreshCatalogRes })
|
|
@HttpCode(HttpStatus.OK)
|
|
async refreshCatalogStatus(
|
|
@User() user: RequestUser,
|
|
@Body(new ValidationPipe()) body: RefreshCatalogStatusReq,
|
|
) {
|
|
this.logger.info('/connection-test/refresh-catalog/status', {
|
|
user: user.user_id,
|
|
customer: user.customer_name,
|
|
connection: body.connection_id,
|
|
session: body.session_id,
|
|
});
|
|
return this.connectionTestService.refreshCatalogStatus(body, user);
|
|
}
|
|
}
|