66 lines
1.6 KiB
Kotlin

package roomescape.schedule.web
import roomescape.schedule.infrastructure.persistence.ScheduleEntity
import roomescape.schedule.infrastructure.persistence.ScheduleStatus
import java.time.LocalDate
import java.time.LocalDateTime
import java.time.LocalTime
data class AvailableThemeIdListResponse(
val themeIds: List<Long>
)
fun List<ScheduleEntity>.toThemeIdListResponse() = AvailableThemeIdListResponse(this.map { it.themeId })
data class ScheduleRetrieveResponse(
val id: Long,
val time: LocalTime,
val status: ScheduleStatus
)
data class ScheduleRetrieveListResponse(
val schedules: List<ScheduleRetrieveResponse>
)
fun List<ScheduleEntity>.toRetrieveListResponse() = ScheduleRetrieveListResponse(
this.map { ScheduleRetrieveResponse(it.id, it.time, it.status) }
)
data class ScheduleCreateRequest(
val date: LocalDate,
val time: LocalTime,
val themeId: Long
)
data class ScheduleCreateResponse(
val id: Long
)
data class ScheduleUpdateRequest(
val time: LocalTime? = null,
val status: ScheduleStatus? = null
)
data class ScheduleDetailRetrieveResponse(
val id: Long,
val date: LocalDate,
val time: LocalTime,
val status: ScheduleStatus,
val createdAt: LocalDateTime,
val createdBy: String,
val updatedAt: LocalDateTime,
val updatedBy: String,
)
fun ScheduleEntity.toDetailRetrieveResponse(createdBy: String, updatedBy: String) = ScheduleDetailRetrieveResponse(
id = this.id,
date = this.date,
time = this.time,
status = this.status,
createdAt = this.createdAt,
createdBy = createdBy,
updatedAt = this.updatedAt,
updatedBy = updatedBy
)