import { Body, Controller, HttpStatus, Post, UseGuards } from '@nestjs/common'; import { ApiResponse, ApiOperation, ApiBearerAuth, ApiTags, } from '@nestjs/swagger'; import { ErrorResponse } from '../../common/error/types/types'; import { RegisterRequest, RegisterResponse } from './types/types'; import { NotificationService } from './notification.service'; import { AuthGuard } from '../../common/guards/auth/authguards'; @ApiTags('notification') @Controller('notification') @ApiBearerAuth() export class NotificationController { constructor(private readonly notificationService: NotificationService) {} @Post('register') @ApiResponse({ status: HttpStatus.OK, type: RegisterResponse, description: '成功時のレスポンス', }) @ApiResponse({ status: HttpStatus.BAD_REQUEST, description: '不正なパラメータ', type: ErrorResponse, }) @ApiResponse({ status: HttpStatus.UNAUTHORIZED, description: '認証エラー', type: ErrorResponse, }) @ApiResponse({ status: HttpStatus.INTERNAL_SERVER_ERROR, description: '想定外のサーバーエラー', type: ErrorResponse, }) @ApiOperation({ operationId: 'register' }) @UseGuards(AuthGuard) async register(@Body() body: RegisterRequest): Promise { const { handler, pns } = body; await this.notificationService.register(pns, handler); return {}; } }