forked from agzam/vyatsu-schedule
30 lines
884 B
Kotlin
30 lines
884 B
Kotlin
package agzam.vyatsu.data.local
|
|
|
|
import agzam.vyatsu.domain.model.LessonType
|
|
import androidx.room.TypeConverter
|
|
import java.time.LocalDate
|
|
import java.time.LocalTime
|
|
|
|
class Converters {
|
|
|
|
@TypeConverter
|
|
fun localDateToEpochDay(date: LocalDate?): Long? = date?.toEpochDay()
|
|
|
|
@TypeConverter
|
|
fun epochDayToLocalDate(epochDay: Long?): LocalDate? = epochDay?.let(LocalDate::ofEpochDay)
|
|
|
|
@TypeConverter
|
|
fun localTimeToMinutes(time: LocalTime?): Int? = time?.let { it.hour * 60 + it.minute }
|
|
|
|
@TypeConverter
|
|
fun minutesToLocalTime(minutes: Int?): LocalTime? =
|
|
minutes?.let { LocalTime.of(it / 60, it % 60) }
|
|
|
|
@TypeConverter
|
|
fun lessonTypeToString(type: LessonType): String = type.name
|
|
|
|
@TypeConverter
|
|
fun stringToLessonType(value: String): LessonType =
|
|
runCatching { LessonType.valueOf(value) }.getOrDefault(LessonType.OTHER)
|
|
}
|