2026-04-17 23:42:24 +01:00
|
|
|
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';
|
2026-04-18 00:01:57 +01:00
|
|
|
import type { User } from '@prisma/client';
|
2026-04-17 23:42:24 +01:00
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
}
|