import { Body, Controller, Delete, Get, Param, ParseUUIDPipe, Post, UseGuards, } from '@nestjs/common'; import { AuthGuard } from '@nestjs/passport'; import { CurrentDbUser } from '../../shared/decorators/current-db-user.decorator'; import type { User } from '@prisma/client'; import { UserProvisioningGuard } from '../users/user-provisioning.guard'; import { CommentsService } from './comments.service'; import { CreateCommentDto } from './dto/create-comment.dto'; @Controller('comments') export class CommentsController { constructor(private readonly commentsService: CommentsService) {} @Get('article/:articleId') listForArticle(@Param('articleId', ParseUUIDPipe) articleId: string) { return this.commentsService.listForArticle(articleId); } @UseGuards(AuthGuard('keycloak'), UserProvisioningGuard) @Post('article/:articleId') create( @Param('articleId', ParseUUIDPipe) articleId: string, @CurrentDbUser() user: User, @Body() dto: CreateCommentDto, ) { return this.commentsService.create(articleId, user, dto); } @UseGuards(AuthGuard('keycloak'), UserProvisioningGuard) @Delete(':id') remove(@Param('id', ParseUUIDPipe) id: string, @CurrentDbUser() user: User) { return this.commentsService.remove(id, user); } }