mirror of
https://github.com/dadosfera/maestro.git
synced 2026-09-01 04:08:16 +00:00
69 lines
2.3 KiB
TypeScript
69 lines
2.3 KiB
TypeScript
import { Controller, Get, Post, Body, Param, Delete, UseFilters, Inject } from '@nestjs/common';
|
|
import { ApiKeyService } from './api-key.service';
|
|
import { CreateApiKeyDto, CreateApiKeyResponseDto, ApiKeyBaseResponseDto } from './dto/api-key.dto';
|
|
import { Authenticated } from 'src/decorators/authentication.decorator';
|
|
import { ApiHeaders, ApiTags, ApiResponse } from '@nestjs/swagger';
|
|
import { LanguageEnum } from 'src/utils/languages.enum';
|
|
import { GrpcToHttpExceptionFilter } from 'src/error/grpc-to-http-exception.filter';
|
|
import { RequestUser, User } from 'src/decorators/user.decorator';
|
|
import { DadosferaLogger } from '@dadosfera/dadosfera-logs';
|
|
|
|
@Controller('api-key')
|
|
@Authenticated()
|
|
@ApiTags('ApiKey')
|
|
@ApiHeaders([{ name: 'dadosfera-lang', enum: LanguageEnum, required: false }])
|
|
@UseFilters(new GrpcToHttpExceptionFilter())
|
|
export class ApiKeyController {
|
|
logger: DadosferaLogger;
|
|
|
|
constructor(
|
|
@Inject(DadosferaLogger)
|
|
dadosferaLogger: DadosferaLogger,
|
|
private readonly apiKeyService: ApiKeyService,
|
|
) {
|
|
this.logger = dadosferaLogger.logger;
|
|
}
|
|
|
|
@Post()
|
|
@ApiResponse({ type: CreateApiKeyResponseDto })
|
|
async create(@Body() createApiKeyDto: CreateApiKeyDto, @User() user: RequestUser): Promise<CreateApiKeyResponseDto> {
|
|
this.logger.info('POST /api-key', {
|
|
permissions: createApiKeyDto.permissions,
|
|
method: 'create'
|
|
});
|
|
const result = await this.apiKeyService.create(createApiKeyDto, user);
|
|
this.logger.info('POST /api-key success', {
|
|
id: result.id,
|
|
method: 'create'
|
|
});
|
|
return result;
|
|
}
|
|
|
|
@Get()
|
|
@ApiResponse({ type: [ApiKeyBaseResponseDto] })
|
|
async findAll(@User() user: RequestUser): Promise<ApiKeyBaseResponseDto[]> {
|
|
this.logger.info('GET /api-key', {
|
|
method: 'findAll'
|
|
});
|
|
const result = await this.apiKeyService.findAll(user);
|
|
this.logger.info('GET /api-key success', {
|
|
count: result.length,
|
|
method: 'findAll'
|
|
});
|
|
return result;
|
|
}
|
|
|
|
@Delete(':id')
|
|
async remove(@Param('id') id: string, @User() user: RequestUser): Promise<void> {
|
|
this.logger.info('DELETE /api-key/:id', {
|
|
id,
|
|
method: 'remove'
|
|
});
|
|
await this.apiKeyService.remove(id, user);
|
|
this.logger.info('DELETE /api-key/:id success', {
|
|
id,
|
|
method: 'remove'
|
|
});
|
|
}
|
|
}
|