package roomescape.theme.infrastructure.persistence import jakarta.persistence.* import roomescape.common.entity.AuditingBaseEntity @Entity @Table(name = "theme") class ThemeEntity( id: Long, var name: String, var description: String, var thumbnailUrl: String, @Enumerated(value = EnumType.STRING) var difficulty: Difficulty, var price: Int, var minParticipants: Short, var maxParticipants: Short, var availableMinutes: Short, var expectedMinutesFrom: Short, var expectedMinutesTo: Short, @Column(columnDefinition = "TINYINT", length = 1) var isOpen: Boolean ) : AuditingBaseEntity(id) { fun modifyIfNotNull( name: String?, description: String?, thumbnailUrl: String?, difficulty: Difficulty?, price: Int?, minParticipants: Short?, maxParticipants: Short?, availableMinutes: Short?, expectedMinutesFrom: Short?, expectedMinutesTo: Short?, isOpen: Boolean? ) { name?.let { this.name = it } description?.let { this.description = it } thumbnailUrl?.let { this.thumbnailUrl = it } difficulty?.let { this.difficulty = it } price?.let { this.price = it } minParticipants?.let { this.minParticipants = it } maxParticipants?.let { this.maxParticipants = it } availableMinutes?.let { this.availableMinutes = it } expectedMinutesFrom?.let { this.expectedMinutesFrom = it } expectedMinutesTo?.let { this.expectedMinutesTo = it } isOpen?.let { this.isOpen = it } } } enum class Difficulty { VERY_EASY, EASY, NORMAL, HARD, VERY_HARD }