import { Controller, Get, Post, Patch, Delete, Param, Body, UsePipes, ValidationPipe, Query, ParseUUIDPipe, HttpCode, HttpStatus,} from '@nestjs/common'; import { QuestionService } from './question.service'; import { CreateQuestionDto } from './dto/create-question.dto'; import { UpdateQuestionDto } from './dto/update-question.dto'; import { Question } from './entity/question.entity'; @Controller('question') export class QuestionController { constructor(private readonly questionService: QuestionService) {} @Post('create') @UsePipes(new ValidationPipe({ transform: true, whitelist: true })) async create(@Body() body: CreateQuestionDto): Promise { return this.questionService.create(body); } @Get('findAll') async findAll( @Query('page') page: string = '1', @Query('limit') limit: string = '10', ) { // The service returns the full pagination object return this.questionService.findAll(parseInt(page, 10), parseInt(limit, 10)); } @Get(':id') async findOne( @Param('id', new ParseUUIDPipe()) id: string, ): Promise { return this.questionService.findById(id); } @Patch(':id') @UsePipes(new ValidationPipe({ transform: true, whitelist: true })) async update( @Param('id', new ParseUUIDPipe()) id: string, @Body() body: UpdateQuestionDto, ): Promise { return this.questionService.update(id, body); } @Delete(':id') @HttpCode(HttpStatus.NO_CONTENT) async remove(@Param('id', new ParseUUIDPipe()) id: string): Promise { return this.questionService.remove(id); } }