48 lines
1.6 KiB
TypeScript
48 lines
1.6 KiB
TypeScript
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<Question> {
|
|
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<Question | null> {
|
|
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<Question | null> {
|
|
return this.questionService.update(id, body);
|
|
}
|
|
|
|
@Delete(':id')
|
|
@HttpCode(HttpStatus.NO_CONTENT)
|
|
async remove(@Param('id', new ParseUUIDPipe()) id: string): Promise<void> {
|
|
return this.questionService.remove(id);
|
|
}
|
|
}
|