Spaces:
Sleeping
Sleeping
Download src/modules/courses/courses.controller.ts from mahrooshishaq/SmartfolioBackend: direct link, hf CLI and curl.
- Browser
- Download file 3 kB
-
https://huggingface.co/spaces/mahrooshishaq/SmartfolioBackend/resolve/main/src/modules/courses/courses.controller.ts
- Command line
-
hf download hf://spaces/mahrooshishaq/SmartfolioBackend/src/modules/courses/courses.controller.ts
-
curl -L -o courses.controller.ts https://huggingface.co/spaces/mahrooshishaq/SmartfolioBackend/resolve/main/src/modules/courses/courses.controller.ts
3 kB
| import { Controller, Get, Query, Param, UseGuards, Req } from '@nestjs/common'; | |
| import { CoursesService, CourseFilters } from './courses.service'; | |
| import { ApiTags, ApiOperation, ApiBearerAuth, ApiQuery, ApiSecurity } from '@nestjs/swagger'; | |
| import { JwtAuthGuard } from '../auth/jwt-auth.guard'; | |
| import { AdminKeyGuard } from '../auth/admin-key.guard'; | |
| ('Courses') | |
| ('courses') | |
| export class CoursesController { | |
| constructor(private readonly coursesService: CoursesService) {} | |
| // βββ GET /courses/me ββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| ('me') | |
| (JwtAuthGuard) | |
| () | |
| ({ summary: 'Get personalized courses for logged-in user' }) | |
| ({ name: 'search', required: false }) | |
| ({ name: 'platform', required: false, enum: ['edX', 'YouTube', 'Coursera', 'Udemy'] }) | |
| ({ name: 'level', required: false, enum: ['Beginner', 'Intermediate', 'Advanced', 'All Levels'] }) | |
| ({ name: 'category', required: false }) | |
| ({ name: 'price', required: false, enum: ['Free', 'Paid'] }) | |
| ({ name: 'language', required: false }) | |
| ({ name: 'page', required: false, type: Number }) | |
| ({ name: 'limit', required: false, type: Number }) | |
| getMyCourses(() req: any, () filters: CourseFilters) { | |
| return this.coursesService.getUserCoursesFiltered(req.user.id, filters); | |
| } | |
| // βββ GET /courses/me/stats ββββββββββββββββββββββββββββββββββββββββββββββββ | |
| ('me/stats') | |
| (JwtAuthGuard) | |
| () | |
| ({ summary: 'Get course stats for logged-in user' | |
| }) | |
| getMyStats(() req: any) { | |
| return this.coursesService.getUserStats(req.user.id); | |
| } | |
| // βββ GET /courses/me/filters ββββββββββββββββββββββββββββββββββββββββββββββ | |
| ('me/filters') | |
| (JwtAuthGuard) | |
| () | |
| ({ summary: 'Get available filter options for logged-in user courses' }) | |
| getMyFilters(() req: any) { | |
| return this.coursesService.getUserFilterOptions(req.user.id); | |
| } | |
| // βββ GET /courses/user/:userId β admin ββββββββββββββββββββββββββββββββββββ | |
| ('user/:userId') | |
| (AdminKeyGuard) | |
| ('admin-key') | |
| ({ summary: 'Admin: get personalized courses for any user' }) | |
| ({ name: 'page', required: false, type: Number }) | |
| ({ name: 'limit', required: false, type: Number }) | |
| getUserCourses(('userId') userId: string, () filters: CourseFilters) { | |
| return this.coursesService.getUserCoursesFiltered(userId, filters); | |
| } | |
| } | |