package net.aiterp.git.ykonsole2.application.routes import com.fasterxml.jackson.annotation.JsonInclude import net.aiterp.git.ykonsole2.domain.models.* import net.aiterp.git.ykonsole2.domain.runtime.* import java.time.Instant @JsonInclude(JsonInclude.Include.NON_NULL) data class ValueDTO( val time: Int? = null, val distance: Int? = null, val calories: Int? = null, val level: Int? = null, val rpmSpeed: Int? = null, val pulse: Int? = null, ) { private val values by lazy { buildList { time?.let { add(Time(it)) } distance?.let { add(Distance(it)) } calories?.let { add(Calories(it)) } level?.let { add(Level(it)) } rpmSpeed?.let { add(RpmSpeed(it)) } pulse?.let { add(Pulse(it)) } } } fun toValues(): List = values fun toValueOrNull() = values.firstOrNull() companion object { fun from(value: Value?) = from(listOfNotNull(value)) fun from(state: WorkoutState) = state.run { from(asValueList()) } fun from(values: List) = ValueDTO( time = values.find