From cce59e522ea1ec78710fa70c5c8f46460b7024e1 Mon Sep 17 00:00:00 2001 From: pricelees Date: Thu, 16 Oct 2025 14:00:28 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=EC=84=B1=EB=8A=A5=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=ED=99=98=EA=B2=BD=20=EC=84=A4=EC=A0=95?= =?UTF-8?q?=EC=9D=84=20=EC=9C=84=ED=95=B4=20=EC=82=AC=EC=9A=A9=EB=90=98?= =?UTF-8?q?=EB=8A=94=20Repository=20=EB=B3=84=EB=8F=84=20=EB=B6=84?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../persistence/ReservationRepository.kt | 7 +-- .../persistence/ScheduleRepository.kt | 15 ------ .../roomescape/test/TestSetupController.kt | 5 ++ .../sangdol/roomescape/test/TestSetupDTO.kt | 12 ++++- .../roomescape/test/TestSetupRepositories.kt | 50 +++++++++++++++++++ .../roomescape/test/TestSetupService.kt | 14 ++++-- .../persistence/UserRepositories.kt | 9 ---- 7 files changed, 80 insertions(+), 32 deletions(-) create mode 100644 service/src/main/kotlin/com/sangdol/roomescape/test/TestSetupRepositories.kt diff --git a/service/src/main/kotlin/com/sangdol/roomescape/reservation/infrastructure/persistence/ReservationRepository.kt b/service/src/main/kotlin/com/sangdol/roomescape/reservation/infrastructure/persistence/ReservationRepository.kt index fc56aa64..a61aae44 100644 --- a/service/src/main/kotlin/com/sangdol/roomescape/reservation/infrastructure/persistence/ReservationRepository.kt +++ b/service/src/main/kotlin/com/sangdol/roomescape/reservation/infrastructure/persistence/ReservationRepository.kt @@ -16,8 +16,8 @@ interface ReservationRepository : JpaRepository { @Query("SELECT r FROM ReservationEntity r WHERE r._id = :id") fun findByIdForUpdate(@Param("id") id: Long): ReservationEntity? - - @Query(""" + @Query( + """ SELECT r.id FROM @@ -27,7 +27,8 @@ interface ReservationRepository : JpaRepository { WHERE r.status = 'PENDING' AND r.created_at <= DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 5 MINUTE) FOR UPDATE SKIP LOCKED - """, nativeQuery = true) + """, nativeQuery = true + ) fun findAllExpiredReservation(): List @Modifying diff --git a/service/src/main/kotlin/com/sangdol/roomescape/schedule/infrastructure/persistence/ScheduleRepository.kt b/service/src/main/kotlin/com/sangdol/roomescape/schedule/infrastructure/persistence/ScheduleRepository.kt index 15850467..ca3b8ac9 100644 --- a/service/src/main/kotlin/com/sangdol/roomescape/schedule/infrastructure/persistence/ScheduleRepository.kt +++ b/service/src/main/kotlin/com/sangdol/roomescape/schedule/infrastructure/persistence/ScheduleRepository.kt @@ -1,7 +1,6 @@ package com.sangdol.roomescape.schedule.infrastructure.persistence import com.sangdol.roomescape.schedule.business.domain.ScheduleOverview -import com.sangdol.roomescape.test.ScheduleWithThemeId import jakarta.persistence.LockModeType import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Lock @@ -160,18 +159,4 @@ interface ScheduleRepository : JpaRepository { """ ) fun releaseHeldSchedules(@Param("scheduleIds") scheduleIds: List): Int - - /** - * for test - */ - @Query(""" - SELECT - s.id, s.theme_id - FROM - schedule s - WHERE - s.status = 'AVAILABLE' - AND s.date > CURRENT_DATE - """, nativeQuery = true) - fun findAllAvailableSchedules(): List } diff --git a/service/src/main/kotlin/com/sangdol/roomescape/test/TestSetupController.kt b/service/src/main/kotlin/com/sangdol/roomescape/test/TestSetupController.kt index a514258c..36756d44 100644 --- a/service/src/main/kotlin/com/sangdol/roomescape/test/TestSetupController.kt +++ b/service/src/main/kotlin/com/sangdol/roomescape/test/TestSetupController.kt @@ -42,4 +42,9 @@ class TestSetupController( fun findAllStoreIds(): StoreIdList { return testSetupService.findAllStores() } + + @GetMapping("/reservations-with-user") + fun findAllReservationsWithUser(): ReservationWithUserList { + return testSetupService.findAllReservationWithUser() + } } diff --git a/service/src/main/kotlin/com/sangdol/roomescape/test/TestSetupDTO.kt b/service/src/main/kotlin/com/sangdol/roomescape/test/TestSetupDTO.kt index 9baab4a5..84a6b98c 100644 --- a/service/src/main/kotlin/com/sangdol/roomescape/test/TestSetupDTO.kt +++ b/service/src/main/kotlin/com/sangdol/roomescape/test/TestSetupDTO.kt @@ -44,4 +44,14 @@ data class StoreIdList( data class StoreId( val storeId: Long -) \ No newline at end of file +) + +data class ReservationWithUser( + val account: String, + val password: String, + val reservationId: Long +) + +data class ReservationWithUserList( + val results: List +) diff --git a/service/src/main/kotlin/com/sangdol/roomescape/test/TestSetupRepositories.kt b/service/src/main/kotlin/com/sangdol/roomescape/test/TestSetupRepositories.kt new file mode 100644 index 00000000..100e7d6e --- /dev/null +++ b/service/src/main/kotlin/com/sangdol/roomescape/test/TestSetupRepositories.kt @@ -0,0 +1,50 @@ +package com.sangdol.roomescape.test + +import com.sangdol.roomescape.reservation.infrastructure.persistence.ReservationEntity +import com.sangdol.roomescape.schedule.infrastructure.persistence.ScheduleEntity +import com.sangdol.roomescape.user.infrastructure.persistence.UserEntity +import org.springframework.data.jpa.repository.JpaRepository +import org.springframework.data.jpa.repository.Query + +interface TestSetupUserRepository: JpaRepository { + /** + * for test + */ + @Query(""" + SELECT * FROM users u LIMIT :count + """, nativeQuery = true) + fun findUsersByCount(count: Long): List +} + +interface TestSetupScheduleRepository: JpaRepository { + /** + * for test + */ + @Query(""" + SELECT + s.id, s.theme_id + FROM + schedule s + WHERE + s.status = 'AVAILABLE' + AND s.date > CURRENT_DATE + """, nativeQuery = true) + fun findAllAvailableSchedules(): List + +} + +interface TestSetupReservationRepository: JpaRepository { + /** + * for test + */ + @Query( + """ + SELECT + u.email, u.password, r.id + FROM + reservation r + JOIN users u ON u.id = r.user_id + """, nativeQuery = true + ) + fun findAllReservationWithUser(): List +} \ No newline at end of file diff --git a/service/src/main/kotlin/com/sangdol/roomescape/test/TestSetupService.kt b/service/src/main/kotlin/com/sangdol/roomescape/test/TestSetupService.kt index 7063385b..8090bcc5 100644 --- a/service/src/main/kotlin/com/sangdol/roomescape/test/TestSetupService.kt +++ b/service/src/main/kotlin/com/sangdol/roomescape/test/TestSetupService.kt @@ -3,10 +3,8 @@ package com.sangdol.roomescape.test import com.sangdol.roomescape.admin.infrastructure.persistence.AdminPermissionLevel import com.sangdol.roomescape.admin.infrastructure.persistence.AdminRepository import com.sangdol.roomescape.admin.infrastructure.persistence.AdminType -import com.sangdol.roomescape.schedule.infrastructure.persistence.ScheduleRepository import com.sangdol.roomescape.store.infrastructure.persistence.StoreRepository import com.sangdol.roomescape.theme.infrastructure.persistence.ThemeRepository -import com.sangdol.roomescape.user.infrastructure.persistence.UserRepository import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional import java.time.LocalTime @@ -16,8 +14,9 @@ class TestSetupService( private val themeRepository: ThemeRepository, private val storeRepository: StoreRepository, private val adminRepository: AdminRepository, - private val userRepository: UserRepository, - private val scheduleRepository: ScheduleRepository, + private val userRepository: TestSetupUserRepository, + private val scheduleRepository: TestSetupScheduleRepository, + private val reservationRepository: TestSetupReservationRepository ) { @Transactional(readOnly = true) @@ -85,4 +84,11 @@ class TestSetupService( StoreId(it.id) }) } + + @Transactional(readOnly = true) + fun findAllReservationWithUser(): ReservationWithUserList { + return ReservationWithUserList( + reservationRepository.findAllReservationWithUser() + ) + } } diff --git a/service/src/main/kotlin/com/sangdol/roomescape/user/infrastructure/persistence/UserRepositories.kt b/service/src/main/kotlin/com/sangdol/roomescape/user/infrastructure/persistence/UserRepositories.kt index 8a334358..f10272a9 100644 --- a/service/src/main/kotlin/com/sangdol/roomescape/user/infrastructure/persistence/UserRepositories.kt +++ b/service/src/main/kotlin/com/sangdol/roomescape/user/infrastructure/persistence/UserRepositories.kt @@ -1,21 +1,12 @@ package com.sangdol.roomescape.user.infrastructure.persistence import org.springframework.data.jpa.repository.JpaRepository -import org.springframework.data.jpa.repository.Query interface UserRepository : JpaRepository { fun existsByEmail(email: String): Boolean fun existsByPhone(phone: String): Boolean fun findByEmail(email: String): UserEntity? - - /** - * for test - */ - @Query(""" - SELECT * FROM users u LIMIT :count - """, nativeQuery = true) - fun findUsersByCount(count: Long): List } interface UserStatusHistoryRepository : JpaRepository