1+ import { Body , Controller , Delete , Get , Param , Post , Query } from "@nestjs/common" ;
2+ import { ApiBearerAuth , ApiTags , ApiResponse } from "@nestjs/swagger" ;
3+
4+ import { User } from "@domain/entities" ;
5+ import { GetUserFromHeader } from "@libs/decorator/getUserFromHeader.decorator" ;
6+ import { FavoriteAppService } from "./favorite-app.service" ;
7+ import { AddFavoriteAppRequest , GetFavoritesAppRequest } from "./dtos/request" ;
8+
9+ @ApiTags ( "FavoriteApps" )
10+ @Controller ( "favorite-app" )
11+ @ApiBearerAuth ( )
12+ export class FavoriteAppController {
13+ constructor ( private readonly favoriteAppService : FavoriteAppService ) { }
14+
15+ @Get ( )
16+ @ApiResponse ( { status : 200 , description : "Get list of favorite bots" } )
17+ async getFavoriteApps (
18+ @GetUserFromHeader ( ) user : User ,
19+ @Query ( ) query : GetFavoritesAppRequest
20+ ) {
21+ return this . favoriteAppService . getMyFavoriteApps ( user . id , query ) ;
22+ }
23+
24+ @Get ( ":id" )
25+ @ApiResponse ( { status : 200 , description : "Get favorite bot detail" } )
26+ async getFavoriteAppDetail (
27+ @GetUserFromHeader ( ) user : User ,
28+ @Param ( "id" ) id : string
29+ ) {
30+ return this . favoriteAppService . getFavoriteAppDetail ( user . id , id ) ;
31+ }
32+
33+ @Post ( )
34+ @ApiResponse ( { status : 201 , description : "Bot added to favorites successfully" } )
35+ async addFavoriteApp (
36+ @GetUserFromHeader ( ) user : User ,
37+ @Body ( ) body : AddFavoriteAppRequest
38+ ) {
39+ return this . favoriteAppService . addFavoriteApp ( user . id , body . id ) ;
40+ }
41+
42+ @Delete ( ":id" )
43+ @ApiResponse ( { status : 200 , description : "Bot removed from favorites successfully" } )
44+ async removeFavoriteApp (
45+ @GetUserFromHeader ( ) user : User ,
46+ @Param ( "id" ) id : string
47+ ) {
48+ return this . favoriteAppService . removeFavoriteApp ( user . id , id ) ;
49+ }
50+ }
0 commit comments