Started to extract persistence library which contains all Sqldelight specific code as Sqldelight conflicts with Compose on iOS
This commit is contained in:
parent
4fa7adeeb1
commit
0f89314ba3
|
@ -0,0 +1,108 @@
|
||||||
|
plugins {
|
||||||
|
alias(libs.plugins.kotlinMultiplatform)
|
||||||
|
|
||||||
|
alias(libs.plugins.androidLibrary)
|
||||||
|
|
||||||
|
alias(libs.plugins.sqldelight)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
kotlin {
|
||||||
|
jvmToolchain(11)
|
||||||
|
|
||||||
|
jvm()
|
||||||
|
|
||||||
|
js {
|
||||||
|
moduleName = "BankingPersistence"
|
||||||
|
binaries.executable()
|
||||||
|
|
||||||
|
browser()
|
||||||
|
}
|
||||||
|
|
||||||
|
androidTarget {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
listOf(
|
||||||
|
iosX64(),
|
||||||
|
iosArm64(),
|
||||||
|
iosSimulatorArm64()
|
||||||
|
).forEach { iosTarget ->
|
||||||
|
iosTarget.binaries.framework {
|
||||||
|
baseName = "ComposeApp"
|
||||||
|
isStatic = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
applyDefaultHierarchyTemplate()
|
||||||
|
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
commonMain.dependencies {
|
||||||
|
implementation(libs.sqldelight.runtime)
|
||||||
|
implementation(libs.sqldelight.coroutines.extensions)
|
||||||
|
implementation(libs.sqldelight.paging.extensions)
|
||||||
|
}
|
||||||
|
|
||||||
|
commonTest.dependencies {
|
||||||
|
implementation(libs.kotlin.test)
|
||||||
|
|
||||||
|
implementation(libs.coroutines.test)
|
||||||
|
}
|
||||||
|
|
||||||
|
androidMain.dependencies {
|
||||||
|
implementation(libs.sqldelight.android.driver)
|
||||||
|
}
|
||||||
|
|
||||||
|
iosMain.dependencies {
|
||||||
|
implementation(libs.sqldelight.native.driver)
|
||||||
|
}
|
||||||
|
|
||||||
|
jvmTest.dependencies {
|
||||||
|
implementation(libs.kotlin.test.junit)
|
||||||
|
}
|
||||||
|
|
||||||
|
jvmMain.dependencies {
|
||||||
|
implementation(libs.sqldelight.sqlite.driver)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sqldelight {
|
||||||
|
databases {
|
||||||
|
create("BankmeisterDb") {
|
||||||
|
packageName.set("net.codinux.banking.persistence")
|
||||||
|
generateAsync = true
|
||||||
|
|
||||||
|
schemaOutputDirectory = file("src/commonMain/sqldelight/databases")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
android {
|
||||||
|
namespace = "net.codinux.banking.persistence"
|
||||||
|
compileSdk = libs.versions.android.compileSdk.get().toInt()
|
||||||
|
|
||||||
|
// sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
|
||||||
|
|
||||||
|
defaultConfig {
|
||||||
|
minSdk = libs.versions.android.minSdk.get().toInt()
|
||||||
|
|
||||||
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
consumerProguardFiles("consumer-rules.pro")
|
||||||
|
}
|
||||||
|
|
||||||
|
buildTypes {
|
||||||
|
release {
|
||||||
|
isMinifyEnabled = false
|
||||||
|
// proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
compileOptions {
|
||||||
|
sourceCompatibility = JavaVersion.VERSION_11
|
||||||
|
targetCompatibility = JavaVersion.VERSION_11
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
package net.codinux.banking.persistence
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
|
||||||
|
object AndroidContext {
|
||||||
|
lateinit var applicationContext: Context
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
package net.codinux.banking.persistence
|
||||||
|
|
||||||
|
import app.cash.sqldelight.async.coroutines.synchronous
|
||||||
|
import app.cash.sqldelight.db.QueryResult
|
||||||
|
import app.cash.sqldelight.db.SqlDriver
|
||||||
|
import app.cash.sqldelight.db.SqlSchema
|
||||||
|
import app.cash.sqldelight.driver.android.AndroidSqliteDriver
|
||||||
|
|
||||||
|
actual fun createSqlDriverDriver(dbName: String, schema: SqlSchema<QueryResult.AsyncValue<Unit>>, version: Long): SqlDriver =
|
||||||
|
AndroidSqliteDriver(schema.synchronous(), AndroidContext.applicationContext, dbName)
|
|
@ -0,0 +1,16 @@
|
||||||
|
package net.codinux.banking.persistence
|
||||||
|
|
||||||
|
import app.cash.sqldelight.db.QueryResult
|
||||||
|
import app.cash.sqldelight.db.SqlDriver
|
||||||
|
import app.cash.sqldelight.db.SqlSchema
|
||||||
|
|
||||||
|
expect fun createSqlDriverDriver(dbName: String, schema: SqlSchema<QueryResult.AsyncValue<Unit>>, version: Long): SqlDriver
|
||||||
|
|
||||||
|
|
||||||
|
class BankingRepositoryNewStart {
|
||||||
|
|
||||||
|
private val schema = BankmeisterDb.Schema
|
||||||
|
|
||||||
|
private val sqlDriver = createSqlDriverDriver("Bankmeister.db", schema, 1L)
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
package net.codinux.banking.persistence
|
||||||
|
|
||||||
|
import app.cash.sqldelight.async.coroutines.synchronous
|
||||||
|
import app.cash.sqldelight.db.QueryResult
|
||||||
|
import app.cash.sqldelight.db.SqlDriver
|
||||||
|
import app.cash.sqldelight.db.SqlSchema
|
||||||
|
import app.cash.sqldelight.driver.native.NativeSqliteDriver
|
||||||
|
|
||||||
|
actual fun createSqlDriverDriver(dbName: String, schema: SqlSchema<QueryResult.AsyncValue<Unit>>, version: Long): SqlDriver =
|
||||||
|
NativeSqliteDriver(schema.synchronous(), dbName)
|
|
@ -0,0 +1,9 @@
|
||||||
|
package net.codinux.banking.persistence
|
||||||
|
|
||||||
|
import app.cash.sqldelight.db.QueryResult
|
||||||
|
import app.cash.sqldelight.db.SqlDriver
|
||||||
|
import app.cash.sqldelight.db.SqlSchema
|
||||||
|
|
||||||
|
actual fun createSqlDriverDriver(dbName: String, schema: SqlSchema<QueryResult.AsyncValue<Unit>>, version: Long): SqlDriver {
|
||||||
|
throw NotImplementedError("TODO")
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
package net.codinux.banking.persistence
|
||||||
|
|
||||||
|
import app.cash.sqldelight.async.coroutines.synchronous
|
||||||
|
import app.cash.sqldelight.db.QueryResult
|
||||||
|
import app.cash.sqldelight.db.SqlDriver
|
||||||
|
import app.cash.sqldelight.db.SqlSchema
|
||||||
|
import app.cash.sqldelight.driver.jdbc.sqlite.JdbcSqliteDriver
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
actual fun createSqlDriverDriver(dbName: String, schema: SqlSchema<QueryResult.AsyncValue<Unit>>, version: Long): SqlDriver {
|
||||||
|
val dbDir = File("data/db").also { it.mkdirs() }
|
||||||
|
|
||||||
|
return JdbcSqliteDriver("jdbc:sqlite:data/db/$dbName").also { driver ->
|
||||||
|
schema.synchronous().also { schema ->
|
||||||
|
if (File(dbDir, dbName).exists() == false) {
|
||||||
|
schema.create(driver)
|
||||||
|
}
|
||||||
|
|
||||||
|
schema.migrate(driver, schema.version, version)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue