import { Controller, DefaultValuePipe, Delete, Get, Param, ParseIntPipe, Post, Query, Req, UseGuards, } from "@nestjs/common"; import { AuthGuard } from "../auth/guards/auth.guard"; import type { AuthenticatedRequest } from "../common/interfaces/request.interface"; import { FavoritesService } from "./favorites.service"; @UseGuards(AuthGuard) @Controller("favorites") export class FavoritesController { constructor(private readonly favoritesService: FavoritesService) {} @Post(":contentId") add(@Req() req: AuthenticatedRequest, @Param("contentId") contentId: string) { return this.favoritesService.addFavorite(req.user.sub, contentId); } @Delete(":contentId") remove( @Req() req: AuthenticatedRequest, @Param("contentId") contentId: string, ) { return this.favoritesService.removeFavorite(req.user.sub, contentId); } @Get() list( @Req() req: AuthenticatedRequest, @Query("limit", new DefaultValuePipe(10), ParseIntPipe) limit: number, @Query("offset", new DefaultValuePipe(0), ParseIntPipe) offset: number, ) { return this.favoritesService.getUserFavorites(req.user.sub, limit, offset); } }