feat: 다른 서비스에서 사용할 지역 정보 조회 서비스 로직 추가

This commit is contained in:
이상진 2025-09-17 10:42:52 +09:00
parent 7c967defcc
commit 7a6afc7282
2 changed files with 28 additions and 11 deletions

View File

@ -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)
}
}
}

View File

@ -6,7 +6,8 @@ import org.springframework.data.repository.query.Param
interface RegionRepository : JpaRepository<RegionEntity, String> {
@Query("""
@Query(
"""
SELECT
new kotlin.Pair(r.sidoCode, r.sidoName)
FROM
@ -15,10 +16,12 @@ interface RegionRepository : JpaRepository<RegionEntity, String> {
r.sidoCode
ORDER BY
r.sidoName
""")
"""
)
fun readAllSido(): List<Pair<String, String>>
@Query("""
@Query(
"""
SELECT
new kotlin.Pair(r.sigunguCode, r.sigunguName)
FROM
@ -29,12 +32,14 @@ interface RegionRepository : JpaRepository<RegionEntity, String> {
r.sigunguCode
ORDER BY
r.sigunguName
""")
"""
)
fun findAllSigunguBySido(
@Param("sidoCode") sidoCode: String
): List<Pair<String, String>>
@Query("""
@Query(
"""
SELECT
r.code
FROM
@ -42,9 +47,12 @@ interface RegionRepository : JpaRepository<RegionEntity, String> {
WHERE
r.sidoCode = :sidoCode
AND r.sigunguCode = :sigunguCode
""")
"""
)
fun findRegionCode(
@Param("sidoCode") sidoCode: String,
@Param("sigunguCode") sigunguCode: String,
): String?
fun findByCode(regionCode: String): RegionEntity?
}