import {Controller, Get, Header, Delete, Options, HttpCode, Req} from '@nestjs/common'; import {ApiTags, ApiResponse, ApiSecurity} from '@nestjs/swagger'; import {LogsService} from './logs.service'; import {ALLOW_ORIGIN_ALL, COLLECTION_LOGS, LOG_TYPE, ALLOW_METHOD, ALLOW_CREDENTIALS, CONTENT_LENGTH, ALLOW_HEADERS} from 'src/consts'; import {ClienLogResponse, ServerLogResponse} from './logs.schema'; import {AuthService} from 'src/services/auth.service'; import {Request} from 'express'; @ApiSecurity('apiKey') @Controller(COLLECTION_LOGS) @ApiTags(COLLECTION_LOGS) export class LogsController { constructor( private readonly logsService: LogsService, private readonly authService: AuthService, ) {} @Get('/client') @Header(...ALLOW_ORIGIN_ALL) @ApiResponse({ status: 200, description: 'Возвращает список клиентских запросов', type: ClienLogResponse, isArray: true, }) async findAllClientLogs(@Req() request: Request): Promise { await this.authService.checkRequest(request); return await this.logsService.findAllClientLogs(); } @Delete('/client') @Header(...ALLOW_ORIGIN_ALL) @ApiResponse({ status: 200, description: 'Пустой список клиентских запросов', type: ClienLogResponse, isArray: true, }) async clearAllClientLogs(@Req() request: Request): Promise { await this.authService.checkRequest(request); return await this.logsService.clearLogsByType(LOG_TYPE.CLIENT); } @Get('/server') @Header(...ALLOW_ORIGIN_ALL) @ApiResponse({ status: 200, description: 'Возвращает список серверных ошибок', type: ServerLogResponse, isArray: true, }) async findAllServerLogs(@Req() request: Request): Promise { await this.authService.checkRequest(request); return await this.logsService.findAllServerLogs(); } @Delete('/server') @Header(...ALLOW_ORIGIN_ALL) @ApiResponse({ status: 200, description: 'Пустой список серверных ошибок', type: ServerLogResponse, isArray: true, }) async clearAllServerLogs(@Req() request: Request): Promise { await this.authService.checkRequest(request); return await this.logsService.clearLogsByType(LOG_TYPE.SERVER); } @Options('') @Header(...ALLOW_ORIGIN_ALL) @Header(...ALLOW_METHOD) @Header(...ALLOW_CREDENTIALS) @Header(...CONTENT_LENGTH) @Header(...ALLOW_HEADERS) @HttpCode(204) async options(): Promise { return ''; } @Options('/server') @Header(...ALLOW_ORIGIN_ALL) @Header(...ALLOW_METHOD) @Header(...ALLOW_CREDENTIALS) @Header(...CONTENT_LENGTH) @Header(...ALLOW_HEADERS) @HttpCode(204) async optionsServer(): Promise { return ''; } @Options('/client') @Header(...ALLOW_ORIGIN_ALL) @Header(...ALLOW_METHOD) @Header(...ALLOW_CREDENTIALS) @Header(...CONTENT_LENGTH) @Header(...ALLOW_HEADERS) @HttpCode(204) async optionsClient(): Promise { return ''; } }