diff --git a/src/main/java/com/hackathon/tomolow/domain/market/dto/request/MarketUpdateRequest.java b/src/main/java/com/hackathon/tomolow/domain/market/dto/request/MarketUpdateRequest.java index eaad429..bda9d28 100644 --- a/src/main/java/com/hackathon/tomolow/domain/market/dto/request/MarketUpdateRequest.java +++ b/src/main/java/com/hackathon/tomolow/domain/market/dto/request/MarketUpdateRequest.java @@ -33,4 +33,7 @@ public class MarketUpdateRequest { @Schema(description = "새 거래소(옵션)", example = "UPBIT") private ExchangeType newExchangeType; + + @Schema(description = "새 심볼(옵션)", example = "KRW-0G") + private String newSymbol; // 필요할 때만 사용 } diff --git a/src/main/java/com/hackathon/tomolow/domain/market/entity/Market.java b/src/main/java/com/hackathon/tomolow/domain/market/entity/Market.java index 37cfcca..5455f92 100644 --- a/src/main/java/com/hackathon/tomolow/domain/market/entity/Market.java +++ b/src/main/java/com/hackathon/tomolow/domain/market/entity/Market.java @@ -47,6 +47,10 @@ public class Market extends BaseTimeEntity { private String imgUrl; // 주식 이미지 (nullable) // set methods + public void setSymbol(String symbol) { + this.symbol = symbol; + } + public void setName(String name) { this.name = name; } diff --git a/src/main/java/com/hackathon/tomolow/domain/market/repository/MarketRepository.java b/src/main/java/com/hackathon/tomolow/domain/market/repository/MarketRepository.java index 6a9cdaa..3d71313 100644 --- a/src/main/java/com/hackathon/tomolow/domain/market/repository/MarketRepository.java +++ b/src/main/java/com/hackathon/tomolow/domain/market/repository/MarketRepository.java @@ -12,6 +12,8 @@ public interface MarketRepository extends JpaRepository { Optional findBySymbol(String symbol); + Optional findByName(String name); + boolean existsBySymbol(String symbol); // 업비트에 등록된 마켓만 가져오기 diff --git a/src/main/java/com/hackathon/tomolow/domain/market/service/MarketDevService.java b/src/main/java/com/hackathon/tomolow/domain/market/service/MarketDevService.java index 85574c4..9e2f1f0 100644 --- a/src/main/java/com/hackathon/tomolow/domain/market/service/MarketDevService.java +++ b/src/main/java/com/hackathon/tomolow/domain/market/service/MarketDevService.java @@ -57,10 +57,25 @@ public MarketResponse findOne(String symbol) { @Transactional public MarketResponse update(MarketUpdateRequest req) { + // 우선 symbol 기준으로 찾기 Market market = marketRepository .findBySymbol(req.getSymbol()) - .orElseThrow(() -> new CustomException(MarketErrorCode.MARKET_NOT_FOUND)); + // 없으면 name 기준으로 한 번 더 찾기 + .orElseGet( + () -> + marketRepository + .findByName(req.getSymbol()) + .orElseThrow(() -> new CustomException(MarketErrorCode.MARKET_NOT_FOUND))); + + // 3️⃣ (선택) 심볼도 바꾸고 싶을 때 + if (req.getNewSymbol() != null && !req.getNewSymbol().isBlank()) { + // 중복 심볼 체크 + if (marketRepository.existsBySymbol(req.getNewSymbol())) { + throw new CustomException(MarketErrorCode.MARKET_ALREADY_EXISTS); + } + market.setSymbol(req.getNewSymbol()); + } if (req.getNewName() != null) { market.setName(req.getNewName());