course_web01 / backend /src /courses /courses.controller.ts
trae-bot
Update project
426f2a4
import {
Controller,
Get,
Post,
Param,
UseGuards,
Request,
ParseIntPipe,
Body,
} from '@nestjs/common';
import { CoursesService } from './courses.service';
import { JwtAuthGuard } from '../auth/guards/jwt-auth.guard';
@Controller('api/courses')
export class CoursesController {
constructor(private readonly coursesService: CoursesService) {}
@Get()
async findAll() {
const data = await this.coursesService.findAll();
return { success: true, data };
}
@UseGuards(JwtAuthGuard)
@Get('my')
async findMyCourses(@Request() req) {
const data = await this.coursesService.getUserCourses(req.user.userId);
return { success: true, data };
}
@UseGuards(JwtAuthGuard)
@Get('my-stars')
async findMyStars(@Request() req) {
const data = await this.coursesService.getUserStars(req.user.userId);
return { success: true, data };
}
@Get(':id')
async findOne(@Param('id', ParseIntPipe) id: number) {
const data = await this.coursesService.findOne(id);
return { success: true, data };
}
@Post(':id/view')
async incrementViewCount(@Param('id', ParseIntPipe) id: number) {
await this.coursesService.incrementViewCount(id);
return { success: true };
}
@Post(':id/like')
async toggleLike(@Param('id', ParseIntPipe) id: number) {
await this.coursesService.toggleLike(id);
return { success: true };
}
@UseGuards(JwtAuthGuard)
@Post(':id/star')
async toggleStar(@Param('id', ParseIntPipe) id: number, @Request() req) {
await this.coursesService.toggleStar(id, req.user.userId);
return { success: true };
}
@UseGuards(JwtAuthGuard)
@Get(':id/access')
async getAccess(@Param('id', ParseIntPipe) id: number, @Request() req) {
const data = await this.coursesService.getCourseAccess(req.user.userId, id);
return { success: true, data };
}
@Get(':id/comments')
async getComments(@Param('id', ParseIntPipe) id: number) {
const data = await this.coursesService.getComments(id);
return { success: true, data };
}
@UseGuards(JwtAuthGuard)
@Post(':id/comments')
async addComment(
@Param('id', ParseIntPipe) id: number,
@Body() body: { content: string; parentId?: number; replyToCommentId?: number },
@Request() req,
) {
const data = await this.coursesService.addComment(
id,
req.user.userId,
body.content,
body.parentId,
body.replyToCommentId,
);
return { success: true, data };
}
}