[#41] 예약 스키마 재정의 #42

Merged
pricelees merged 41 commits from refactor/#41 into main 2025-09-09 00:43:39 +00:00
Showing only changes of commit 85c8db1866 - Show all commits

View File

@ -1,68 +1,36 @@
package roomescape.reservation.infrastructure.persistence
import com.fasterxml.jackson.annotation.JsonIgnore
import jakarta.persistence.*
import roomescape.common.entity.BaseEntity
import roomescape.member.infrastructure.persistence.MemberEntity
import roomescape.theme.infrastructure.persistence.ThemeEntity
import roomescape.time.infrastructure.persistence.TimeEntity
import java.time.LocalDate
import jakarta.persistence.Entity
import jakarta.persistence.EnumType
import jakarta.persistence.Enumerated
import jakarta.persistence.Table
import roomescape.common.entity.AuditingBaseEntity
@Entity
@Table(name = "reservations")
@Table(name = "reservation")
class ReservationEntity(
@Id
@Column(name = "reservation_id")
private var _id: Long?,
id: Long,
@Column(name = "date", nullable = false)
var date: LocalDate,
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "time_id", nullable = false)
var time: TimeEntity,
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "theme_id", nullable = false)
var theme: ThemeEntity,
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "member_id", nullable = false)
var member: MemberEntity,
val memberId: Long,
val scheduleId: Long,
val reserverName: String,
val reserverContact: String,
val participantCount: Short,
val requirement: String,
@Enumerated(value = EnumType.STRING)
@Column(name = "status", nullable = false, length = 30)
var status: ReservationStatus,
): BaseEntity() {
override fun getId(): Long? = _id
@JsonIgnore
fun isWaiting(): Boolean = status == ReservationStatus.WAITING
@JsonIgnore
fun isReservedBy(memberId: Long): Boolean {
return this.member.id == memberId
}
fun cancelByUser() {
this.status = ReservationStatus.CANCELED_BY_USER
}
) : AuditingBaseEntity(id) {
fun confirm() {
this.status = ReservationStatus.CONFIRMED
}
fun cancel() {
this.status = ReservationStatus.CANCELED
}
}
enum class ReservationStatus {
CONFIRMED,
CONFIRMED_PAYMENT_REQUIRED,
PENDING,
WAITING,
CANCELED_BY_USER,
AUTOMATICALLY_CANCELED,
;
companion object {
fun confirmedStatus(): Array<ReservationStatus> = arrayOf(CONFIRMED, CONFIRMED_PAYMENT_REQUIRED)
}
PENDING, CONFIRMED, CANCELED, FAILED, EXPIRED
}