From b24753fe60ebf22bfccb72fad99d59fe4ffb2f29 Mon Sep 17 00:00:00 2001 From: anjdydhody Date: Mon, 25 Nov 2024 20:09:59 +0900 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat:=20=EC=A3=BC=EC=8B=9D=20?= =?UTF-8?q?=EC=A6=90=EA=B2=A8=EC=B0=BE=EA=B8=B0=20=EC=B7=A8=EC=86=8C=20API?= =?UTF-8?q?=20=EA=B5=AC=ED=98=84=20#178?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bookmark/stock-bookmark.controller.ts | 27 ++++++++++++++++++- .../stock/bookmark/stock-bookmark.service.ts | 17 +++++++++++- 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/BE/src/stock/bookmark/stock-bookmark.controller.ts b/BE/src/stock/bookmark/stock-bookmark.controller.ts index b3d9f2e7..4c776e60 100644 --- a/BE/src/stock/bookmark/stock-bookmark.controller.ts +++ b/BE/src/stock/bookmark/stock-bookmark.controller.ts @@ -1,4 +1,11 @@ -import { Controller, Param, Post, Req, UseGuards } from '@nestjs/common'; +import { + Controller, + Delete, + Param, + Post, + Req, + UseGuards, +} from '@nestjs/common'; import { ApiBearerAuth, ApiOperation, @@ -31,4 +38,22 @@ export class StockBookmarkController { stockCode, ); } + + @Delete('/:stockCode') + @ApiBearerAuth() + @UseGuards(JwtAuthGuard) + @ApiOperation({ summary: '종목 즐겨찾기 취소 API' }) + @ApiResponse({ + status: 200, + description: '종목 즐겨찾기 취소 성공', + }) + async deleteBookmark( + @Req() request: Request, + @Param('stockCode') stockCode: string, + ) { + await this.stockBookmarkService.unregisterBookmark( + parseInt(request.user.userId, 10), + stockCode, + ); + } } diff --git a/BE/src/stock/bookmark/stock-bookmark.service.ts b/BE/src/stock/bookmark/stock-bookmark.service.ts index a711cb27..49e2a3fa 100644 --- a/BE/src/stock/bookmark/stock-bookmark.service.ts +++ b/BE/src/stock/bookmark/stock-bookmark.service.ts @@ -1,4 +1,8 @@ -import { BadRequestException, Injectable } from '@nestjs/common'; +import { + BadRequestException, + Injectable, + NotFoundException, +} from '@nestjs/common'; import { StockBookmarkRepository } from './stock-bookmark.repository'; @Injectable() @@ -22,4 +26,15 @@ export class StockBookmarkService { }); await this.stockBookmarkRepository.insert(bookmark); } + + async unregisterBookmark(userId, stockCode) { + const bookmark = await this.stockBookmarkRepository.findOneBy({ + user_id: userId, + stock_code: stockCode, + }); + + if (!bookmark) throw new NotFoundException('존재하지 않는 북마크입니다.'); + + await this.stockBookmarkRepository.remove(bookmark); + } }