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? }