PhiloMind / src /quizzes /quizzes.controller.ts
github-actions[bot]
Deploy Backend from GitHub Actions Commit: ca37b2a1c9dd5c702619ea7ae7b3260d2fb5663d
b185a6d
Raw
History Blame Contribute Delete
1.7 kB
import {
Controller,
Get,
Post,
Body,
Param,
Query,
Put,
Delete,
UseGuards,
} from "@nestjs/common";
import { QuizzesService } from "./quizzes.service";
import { ApiTags, ApiOperation, ApiBearerAuth } from "@nestjs/swagger";
import { JwtAuthGuard } from "../auth/jwt-auth.guard";
import { RolesGuard } from "../auth/roles.guard";
import { Roles } from "../auth/roles.decorator";
import { CreateQuizDto } from "./dto/create-quiz.dto";
import { UpdateQuizDto } from "./dto/update-quiz.dto";
@ApiTags("Quizzes & Interactive Systems")
@Controller("quizzes")
@UseGuards(JwtAuthGuard, RolesGuard)
@ApiBearerAuth()
export class QuizzesController {
constructor(private quizzesService: QuizzesService) {}
@Post()
@Roles("admin")
@ApiOperation({ summary: "Create a new quiz or matching game" })
async createQuiz(@Body() dto: CreateQuizDto) {
return this.quizzesService.createQuiz(dto);
}
@Get()
@ApiOperation({
summary: "List all quizzes, optionally filtered by ConceptNode ID",
})
async getQuizzes(@Query("nodeId") nodeId?: string) {
return this.quizzesService.getQuizzes(nodeId);
}
@Get(":id")
@ApiOperation({ summary: "Get single quiz details" })
async getQuizById(@Param("id") id: string) {
return this.quizzesService.getQuizById(id);
}
@Put(":id")
@Roles("admin")
@ApiOperation({ summary: "Update a quiz" })
async updateQuiz(@Param("id") id: string, @Body() dto: UpdateQuizDto) {
return this.quizzesService.updateQuiz(id, dto);
}
@Delete(":id")
@Roles("admin")
@ApiOperation({ summary: "Delete a quiz by ID" })
async deleteQuiz(@Param("id") id: string) {
return this.quizzesService.deleteQuiz(id);
}
}