refactor: 날짜, 테마에 대한 예약 시간을 조회할 때 쿼리에서 날짜, 테마를 모두 입력받도록 수정

This commit is contained in:
이상진 2025-07-18 18:31:23 +09:00
parent 3127b19bc4
commit 0ac7539734
3 changed files with 8 additions and 19 deletions

View File

@ -64,16 +64,11 @@ class ReservationTimeService(
@Transactional(readOnly = true)
fun findAllAvailableTimesByDateAndTheme(date: LocalDate, themeId: Long): ReservationTimeInfosResponse {
val allTimes = reservationTimeRepository.findAll()
val reservations: List<ReservationEntity> = reservationRepository.findByThemeId(themeId)
val reservations: List<ReservationEntity> = reservationRepository.findByDateAndThemeId(date, themeId)
return ReservationTimeInfosResponse(allTimes
.map { time ->
ReservationTimeInfoResponse(
time.id!!,
time.startAt,
reservations.any { reservation -> reservation.hasSameDateTime(date, time) }
)
}
)
return ReservationTimeInfosResponse(allTimes.map { time ->
val alreadyBooked: Boolean = reservations.any { reservation -> reservation.reservationTime.id == time.id }
time.toInfoResponse(alreadyBooked)
})
}
}

View File

@ -31,12 +31,6 @@ class ReservationEntity(
@Enumerated(value = EnumType.STRING)
var reservationStatus: ReservationStatus
) {
@JsonIgnore
fun hasSameDateTime(date: LocalDate?, time: ReservationTimeEntity): Boolean {
return this.date == date && time.startAt == this.reservationTime.startAt
}
@JsonIgnore
fun isWaiting(): Boolean = reservationStatus == ReservationStatus.WAITING

View File

@ -6,13 +6,13 @@ import org.springframework.data.jpa.repository.Modifying
import org.springframework.data.jpa.repository.Query
import org.springframework.data.repository.query.Param
import roomescape.reservation.web.MyReservationResponse
import java.time.LocalDate
interface ReservationRepository
: JpaRepository<ReservationEntity, Long>, JpaSpecificationExecutor<ReservationEntity>
{
: JpaRepository<ReservationEntity, Long>, JpaSpecificationExecutor<ReservationEntity> {
fun findByReservationTime(reservationTime: ReservationTimeEntity): List<ReservationEntity>
fun findByThemeId(themeId: Long): List<ReservationEntity>
fun findByDateAndThemeId(date: LocalDate, themeId: Long): List<ReservationEntity>
@Modifying
@Query("""