From 7a6afc72821216a5bb179244c7f9ebb9798865a8 Mon Sep 17 00:00:00 2001 From: pricelees Date: Wed, 17 Sep 2025 10:42:52 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=8B=A4=EB=A5=B8=20=EC=84=9C=EB=B9=84?= =?UTF-8?q?=EC=8A=A4=EC=97=90=EC=84=9C=20=EC=82=AC=EC=9A=A9=ED=95=A0=20?= =?UTF-8?q?=EC=A7=80=EC=97=AD=20=EC=A0=95=EB=B3=B4=20=EC=A1=B0=ED=9A=8C=20?= =?UTF-8?q?=EC=84=9C=EB=B9=84=EC=8A=A4=20=EB=A1=9C=EC=A7=81=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../region/business/RegionService.kt | 19 +++++++++++++----- .../persistence/RegionRepository.kt | 20 +++++++++++++------ 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/src/main/kotlin/roomescape/region/business/RegionService.kt b/src/main/kotlin/roomescape/region/business/RegionService.kt index 5d6a9486..25966644 100644 --- a/src/main/kotlin/roomescape/region/business/RegionService.kt +++ b/src/main/kotlin/roomescape/region/business/RegionService.kt @@ -7,11 +7,7 @@ import org.springframework.transaction.annotation.Transactional import roomescape.region.exception.RegionErrorCode import roomescape.region.exception.RegionException import roomescape.region.infrastructure.persistence.RegionRepository -import roomescape.region.web.RegionCodeResponse -import roomescape.region.web.SidoListResponse -import roomescape.region.web.SidoResponse -import roomescape.region.web.SigunguListResponse -import roomescape.region.web.SigunguResponse +import roomescape.region.web.* private val log: KLogger = KotlinLogging.logger {} @@ -61,4 +57,17 @@ class RegionService( throw RegionException(RegionErrorCode.REGION_CODE_NOT_FOUND) } } + + @Transactional(readOnly = true) + fun findRegionInfo(regionCode: String): RegionInfoResponse { + log.info { "[RegionService.findRegionInfo] 지역 정보 조회 시작: regionCode=${regionCode}" } + + return regionRepository.findByCode(regionCode)?.let { + log.info { "[RegionService.findRegionInfo] 지역 정보 조회 완료: code=${it} regionCode=${regionCode}" } + RegionInfoResponse(it.code, it.sidoName, it.sigunguName) + } ?: run { + log.warn { "[RegionService.findRegionInfo] 지역 정보 조회 실패: regionCode=${regionCode}" } + throw RegionException(RegionErrorCode.REGION_CODE_NOT_FOUND) + } + } } diff --git a/src/main/kotlin/roomescape/region/infrastructure/persistence/RegionRepository.kt b/src/main/kotlin/roomescape/region/infrastructure/persistence/RegionRepository.kt index fae9df2e..e17acb39 100644 --- a/src/main/kotlin/roomescape/region/infrastructure/persistence/RegionRepository.kt +++ b/src/main/kotlin/roomescape/region/infrastructure/persistence/RegionRepository.kt @@ -6,7 +6,8 @@ import org.springframework.data.repository.query.Param interface RegionRepository : JpaRepository { - @Query(""" + @Query( + """ SELECT new kotlin.Pair(r.sidoCode, r.sidoName) FROM @@ -15,10 +16,12 @@ interface RegionRepository : JpaRepository { r.sidoCode ORDER BY r.sidoName - """) + """ + ) fun readAllSido(): List> - @Query(""" + @Query( + """ SELECT new kotlin.Pair(r.sigunguCode, r.sigunguName) FROM @@ -29,12 +32,14 @@ interface RegionRepository : JpaRepository { r.sigunguCode ORDER BY r.sigunguName - """) + """ + ) fun findAllSigunguBySido( @Param("sidoCode") sidoCode: String ): List> - @Query(""" + @Query( + """ SELECT r.code FROM @@ -42,9 +47,12 @@ interface RegionRepository : JpaRepository { WHERE r.sidoCode = :sidoCode AND r.sigunguCode = :sigunguCode - """) + """ + ) fun findRegionCode( @Param("sidoCode") sidoCode: String, @Param("sigunguCode") sigunguCode: String, ): String? + + fun findByCode(regionCode: String): RegionEntity? }