[#16] Reservation 도메인 코드 코틀린 마이그레이션 #17

Merged
pricelees merged 40 commits from refactor/#16 into main 2025-07-21 12:08:56 +00:00
3 changed files with 8 additions and 19 deletions
Showing only changes of commit 0ac7539734 - Show all commits

View File

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

View File

@ -31,12 +31,6 @@ class ReservationEntity(
@Enumerated(value = EnumType.STRING) @Enumerated(value = EnumType.STRING)
var reservationStatus: ReservationStatus var reservationStatus: ReservationStatus
) { ) {
@JsonIgnore
fun hasSameDateTime(date: LocalDate?, time: ReservationTimeEntity): Boolean {
return this.date == date && time.startAt == this.reservationTime.startAt
}
@JsonIgnore @JsonIgnore
fun isWaiting(): Boolean = reservationStatus == ReservationStatus.WAITING 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.jpa.repository.Query
import org.springframework.data.repository.query.Param import org.springframework.data.repository.query.Param
import roomescape.reservation.web.MyReservationResponse import roomescape.reservation.web.MyReservationResponse
import java.time.LocalDate
interface ReservationRepository interface ReservationRepository
: JpaRepository<ReservationEntity, Long>, JpaSpecificationExecutor<ReservationEntity> : JpaRepository<ReservationEntity, Long>, JpaSpecificationExecutor<ReservationEntity> {
{
fun findByReservationTime(reservationTime: ReservationTimeEntity): List<ReservationEntity> fun findByReservationTime(reservationTime: ReservationTimeEntity): List<ReservationEntity>
fun findByThemeId(themeId: Long): List<ReservationEntity> fun findByDateAndThemeId(date: LocalDate, themeId: Long): List<ReservationEntity>
@Modifying @Modifying
@Query(""" @Query("""