diff --git a/src/main/java/com/coanalysis/server/crypto/adapter/in/SearchCryptoController.java b/src/main/java/com/coanalysis/server/crypto/adapter/in/SearchCryptoController.java index 642cffb..2bb7db6 100644 --- a/src/main/java/com/coanalysis/server/crypto/adapter/in/SearchCryptoController.java +++ b/src/main/java/com/coanalysis/server/crypto/adapter/in/SearchCryptoController.java @@ -29,13 +29,13 @@ public ResponseEntity>> searchByKeyword(@ } @Override - @GetMapping("/{id}") - public ResponseEntity> findById(@PathVariable(value = "id") Long id) { - if (ObjectUtils.isEmpty(id)) { - throw new CustomException(ErrorCode.INVALID_INPUT_VALUE, "코인 ID가 필요합니다."); + @GetMapping("/{ticker}") + public ResponseEntity> findByTicker(@PathVariable(value = "ticker") String ticker) { + if (ObjectUtils.isEmpty(ticker)) { + throw new CustomException(ErrorCode.INVALID_INPUT_VALUE, "코인 티커가 필요합니다."); } - Crypto crypto = searchCryptoUsecase.findById(id) + Crypto crypto = searchCryptoUsecase.findByTicker(ticker) .orElseThrow(() -> new CustomException(ErrorCode.CRYPTO_NOT_FOUND)); return ResponseEntity.ok(ApiResponse.success(SearchCryptoResponse.of(crypto))); diff --git a/src/main/java/com/coanalysis/server/crypto/adapter/in/swagger/SearchCryptoControllerSwagger.java b/src/main/java/com/coanalysis/server/crypto/adapter/in/swagger/SearchCryptoControllerSwagger.java index feefb87..9d38474 100644 --- a/src/main/java/com/coanalysis/server/crypto/adapter/in/swagger/SearchCryptoControllerSwagger.java +++ b/src/main/java/com/coanalysis/server/crypto/adapter/in/swagger/SearchCryptoControllerSwagger.java @@ -45,7 +45,6 @@ public interface SearchCryptoControllerSwagger { "success": true, "data": [ { - "id": 1, "ticker": "BTC", "name": "비트코인", "logoUrl": "https://example.com/btc.png", @@ -53,7 +52,6 @@ public interface SearchCryptoControllerSwagger { "tradingVolume": 500000000000.0 }, { - "id": 2, "ticker": "BCH", "name": "비트코인캐시", "logoUrl": "https://example.com/bch.png", @@ -99,10 +97,12 @@ ResponseEntity>> searchByKeyword( @Operation( summary = "코인 상세 조회", description = """ - 코인 ID를 기반으로 암호화폐 상세 정보를 조회합니다. + 코인 티커를 기반으로 암호화폐 상세 정보를 조회합니다. - 코인의 현재가, 거래대금 등 상세 정보를 제공합니다. - - 존재하지 않는 ID로 조회 시 404 에러가 반환됩니다. + - 존재하지 않는 티커로 조회 시 404 에러가 반환됩니다. + + **티커 예시:** BTC, ETH, XRP, SOL 등 """ ) @ApiResponses(value = { @@ -118,7 +118,6 @@ ResponseEntity>> searchByKeyword( { "success": true, "data": { - "id": 1, "ticker": "BTC", "name": "비트코인", "logoUrl": "https://example.com/btc.png", @@ -133,18 +132,18 @@ ResponseEntity>> searchByKeyword( ), @io.swagger.v3.oas.annotations.responses.ApiResponse( responseCode = "400", - description = "잘못된 요청 (ID 누락)", + description = "잘못된 요청 (티커 누락)", content = @Content( mediaType = "application/json", examples = @ExampleObject( - name = "ID 누락 오류", + name = "티커 누락 오류", value = """ { "success": false, "data": null, "error": { "code": "INVALID_INPUT_VALUE", - "message": "코인 ID가 필요합니다." + "message": "코인 티커가 필요합니다." } } """ @@ -172,11 +171,11 @@ ResponseEntity>> searchByKeyword( ) ) }) - ResponseEntity> findById( + ResponseEntity> findByTicker( @Parameter( - name = "id", - description = "코인 고유 ID", + name = "ticker", + description = "코인 티커 (심볼)", required = true, - example = "1" - ) Long id); + example = "BTC" + ) String ticker); } \ No newline at end of file diff --git a/src/main/java/com/coanalysis/server/crypto/adapter/out/SearchCryptoAdapter.java b/src/main/java/com/coanalysis/server/crypto/adapter/out/SearchCryptoAdapter.java index 2c68ab3..5e34045 100644 --- a/src/main/java/com/coanalysis/server/crypto/adapter/out/SearchCryptoAdapter.java +++ b/src/main/java/com/coanalysis/server/crypto/adapter/out/SearchCryptoAdapter.java @@ -20,7 +20,7 @@ public List searchByKeyword(String keyword) { } @Override - public Optional findById(Long id) { - return cryptoRepository.findById(id); + public Optional findByTicker(String ticker) { + return cryptoRepository.findById(ticker); } } diff --git a/src/main/java/com/coanalysis/server/crypto/application/port/in/SearchCryptoUsecase.java b/src/main/java/com/coanalysis/server/crypto/application/port/in/SearchCryptoUsecase.java index 7dd254a..957448a 100644 --- a/src/main/java/com/coanalysis/server/crypto/application/port/in/SearchCryptoUsecase.java +++ b/src/main/java/com/coanalysis/server/crypto/application/port/in/SearchCryptoUsecase.java @@ -8,5 +8,5 @@ public interface SearchCryptoUsecase { List searchByKeyword(String keyword); - Optional findById(Long id); + Optional findByTicker(String ticker); } diff --git a/src/main/java/com/coanalysis/server/crypto/application/port/out/SearchCryptoPort.java b/src/main/java/com/coanalysis/server/crypto/application/port/out/SearchCryptoPort.java index 865dbe2..0c466c8 100644 --- a/src/main/java/com/coanalysis/server/crypto/application/port/out/SearchCryptoPort.java +++ b/src/main/java/com/coanalysis/server/crypto/application/port/out/SearchCryptoPort.java @@ -7,5 +7,5 @@ public interface SearchCryptoPort { List searchByKeyword(String keyword); - Optional findById(Long id); + Optional findByTicker(String ticker); } diff --git a/src/main/java/com/coanalysis/server/crypto/application/service/SearchCryptoService.java b/src/main/java/com/coanalysis/server/crypto/application/service/SearchCryptoService.java index b8c7273..720caaa 100644 --- a/src/main/java/com/coanalysis/server/crypto/application/service/SearchCryptoService.java +++ b/src/main/java/com/coanalysis/server/crypto/application/service/SearchCryptoService.java @@ -21,7 +21,7 @@ public List searchByKeyword(String keyword) { } @Override - public Optional findById(Long id) { - return searchCryptoPort.findById(id); + public Optional findByTicker(String ticker) { + return searchCryptoPort.findByTicker(ticker); } } diff --git a/src/main/java/com/coanalysis/server/infrastructure/repository/CryptoRepository.java b/src/main/java/com/coanalysis/server/infrastructure/repository/CryptoRepository.java index 6056ebc..7df7b1b 100644 --- a/src/main/java/com/coanalysis/server/infrastructure/repository/CryptoRepository.java +++ b/src/main/java/com/coanalysis/server/infrastructure/repository/CryptoRepository.java @@ -8,7 +8,7 @@ import java.util.List; -public interface CryptoRepository extends JpaRepository, CryptoDslRepository { +public interface CryptoRepository extends JpaRepository, CryptoDslRepository { @Query("SELECT c FROM Crypto c WHERE c.name LIKE %:keyword% OR c.ticker LIKE %:keyword% ORDER BY c.tradingVolume DESC LIMIT 4") List searchByKeyword(@Param("keyword") String keyword);