Add JVM target to shared module

This commit is contained in:
Matte23
2020-12-29 23:30:31 +01:00
parent f7213dae1c
commit 13abf510a9
4 changed files with 57 additions and 0 deletions

View File

@@ -22,6 +22,7 @@ repositories {
kotlin {
android()
jvm()
val sdkName = System.getenv("SDK_NAME") ?: "iphonesimulator"
@@ -85,6 +86,19 @@ kotlin {
implementation(Dependencies.SQLDelight.sqlDelightNative)
}
}
val jvmMain by getting {
dependencies {
// Ktor
implementation(Dependencies.Ktor.ktorOkhttp)
implementation(Dependencies.Ktor.slf4j)
// SqlDelight
implementation(Dependencies.SQLDelight.sqlDelightSQLite)
// Misc
implementation(Dependencies.Misc.jsoup)
}
}
}
}

View File

@@ -0,0 +1,7 @@
package net.underdesk.circolapp.shared
import kotlinx.coroutines.Dispatchers
actual object PlatformDispatcher {
actual val IO = Dispatchers.IO
}

View File

@@ -0,0 +1,33 @@
package net.underdesk.circolapp.shared.data
import com.squareup.sqldelight.db.SqlDriver
import com.squareup.sqldelight.sqlite.driver.JdbcSqliteDriver
actual class DatabaseDriverFactory {
actual fun createDriver(): SqlDriver {
return JdbcSqliteDriver(JdbcSqliteDriver.IN_MEMORY + "circolapp.db")
.also {
val currentVer = getVersion(it)
if (currentVer == 0) {
AppDatabase.Schema.create(it)
setVersion(it, 1)
} else {
val schemaVer: Int = AppDatabase.Schema.version
if (schemaVer > currentVer) {
AppDatabase.Schema.migrate(it, currentVer, schemaVer)
setVersion(it, schemaVer)
println("init: migrated from $currentVer to $schemaVer")
}
}
}
}
private fun getVersion(driver: SqlDriver): Int {
val sqlCursor = driver.executeQuery(null, "PRAGMA user_version;", 0, null)
return sqlCursor.getLong(0)!!.toInt()
}
private fun setVersion(driver: SqlDriver, version: Int) {
driver.execute(null, String.format("PRAGMA user_version = %d;", version), 0, null)
}
}