Skip to content

Commit

Permalink
Migrate to using Kotlin's new Enum entries
Browse files Browse the repository at this point in the history
  • Loading branch information
chrisbanes committed Sep 1, 2023
1 parent 26950a6 commit 96c1927
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@
package app.tivi.data.columnadaptors

import app.cash.sqldelight.ColumnAdapter
import app.tivi.extensions.unsafeLazy
import kotlinx.datetime.DayOfWeek

internal object DayOfWeekColumnAdapter : ColumnAdapter<DayOfWeek, Long> {
private val values by unsafeLazy { DayOfWeek.values().associateBy { it.dbValue } }

override fun decode(databaseValue: Long): DayOfWeek = values.getValue(databaseValue.toInt())
@OptIn(ExperimentalStdlibApi::class)
override fun decode(databaseValue: Long): DayOfWeek {
return DayOfWeek.entries.first { it.dbValue.toLong() == databaseValue }
}

override fun encode(value: DayOfWeek): Long = value.dbValue.toLong()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ package app.tivi.data.columnadaptors

import app.cash.sqldelight.ColumnAdapter
import app.tivi.data.models.ImageType
import app.tivi.extensions.unsafeLazy

internal object ImageTypeColumnAdapter : ColumnAdapter<ImageType, String> {
private val values by unsafeLazy { ImageType.values().associateBy(ImageType::storageKey) }

override fun decode(databaseValue: String): ImageType = values.getValue(databaseValue)
@OptIn(ExperimentalStdlibApi::class)
override fun decode(databaseValue: String): ImageType {
return ImageType.entries.first { it.storageKey == databaseValue }
}

override fun encode(value: ImageType): String = value.storageKey
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ package app.tivi.data.columnadaptors

import app.cash.sqldelight.ColumnAdapter
import app.tivi.data.models.PendingAction
import app.tivi.extensions.unsafeLazy

internal object PendingActionColumnAdapter : ColumnAdapter<PendingAction, String> {
private val values by unsafeLazy { PendingAction.values().associateBy(PendingAction::value) }

override fun decode(databaseValue: String): PendingAction = values.getValue(databaseValue)
@OptIn(ExperimentalStdlibApi::class)
override fun decode(databaseValue: String): PendingAction {
return PendingAction.entries.first { it.value == databaseValue }
}

override fun encode(value: PendingAction): String = value.value
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@ package app.tivi.data.columnadaptors

import app.cash.sqldelight.ColumnAdapter
import app.tivi.data.models.Request
import app.tivi.extensions.unsafeLazy

internal object RequestColumnAdapter : ColumnAdapter<Request, String> {
private val values by unsafeLazy { Request.values().associateBy(Request::tag) }
@OptIn(ExperimentalStdlibApi::class)
override fun decode(databaseValue: String): Request {
return Request.entries.first { it.tag == databaseValue }
}

override fun decode(databaseValue: String): Request = values.getValue(databaseValue)
override fun encode(value: Request): String = value.tag
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ package app.tivi.data.columnadaptors

import app.cash.sqldelight.ColumnAdapter
import app.tivi.data.models.ShowStatus
import app.tivi.extensions.unsafeLazy

internal object ShowStatusColumnAdapter : ColumnAdapter<ShowStatus, String> {
private val values by unsafeLazy { ShowStatus.values().associateBy(ShowStatus::storageKey) }

override fun decode(databaseValue: String): ShowStatus = values.getValue(databaseValue)
@OptIn(ExperimentalStdlibApi::class)
override fun decode(databaseValue: String): ShowStatus {
return ShowStatus.entries.first { it.storageKey == databaseValue }
}

override fun encode(value: ShowStatus): String = value.storageKey
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,17 @@
package app.tivi.gradle

import org.gradle.api.Project
import org.gradle.kotlin.dsl.withType
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask

fun Project.configureKotlin() {
// Configure Java to use our chosen language level. Kotlin will automatically pick this up
configureJava()

tasks.withType<KotlinCompilationTask<*>>().configureEach {
compilerOptions {
languageVersion.set(KotlinVersion.KOTLIN_1_9)
}
}
}

0 comments on commit 96c1927

Please sign in to comment.