migrate(local-db): replace Room with SQLDelight for JS/WASM compatibility

Replaced Room with SQLDelight for improved multiplatform support, enabling JavaScript and WebAssembly targets. Added custom database driver implementations for JVM, JS, and WASM. Updated Gradle configurations, dependencies, and project structure accordingly.
This commit is contained in:
2026-01-09 12:32:12 +01:00
parent 6443edd386
commit 13cfc37b37
26 changed files with 833 additions and 397 deletions
+18 -39
View File
@@ -45,45 +45,30 @@ kotlin {
// Shared Konfig & Utilities (AppConfig + BuildConfig)
implementation(projects.frontend.shared)
// Compose dependencies
//implementation("org.jetbrains.compose.runtime:runtime:1.10.0-rc02")
implementation("org.jetbrains.compose.runtime:runtime:1.10.0-rc02")
implementation("org.jetbrains.compose.foundation:foundation:1.10.0-rc02")
implementation("org.jetbrains.compose.material3:material3:1.9.0-beta03")
implementation("org.jetbrains.compose.ui:ui:1.10.0-rc02")
implementation("org.jetbrains.compose.components:components-resources:1.10.0-rc02")
implementation("org.jetbrains.compose.material:material-icons-extended:1.7.3")
// Ktor client for HTTP calls
implementation(libs.ktor.client.core)
implementation(libs.ktor.client.contentNegotiation)
implementation(libs.ktor.client.serialization.kotlinx.json)
implementation(libs.ktor.client.logging)
implementation(libs.ktor.client.auth)
// DI
implementation(libs.koin.core)
// Network core (provides apiClient + TokenProvider)
implementation(projects.frontend.core.network)
// Coroutines and serialization
implementation(libs.kotlinx.coroutines.core)
implementation(libs.kotlinx.serialization.json)
// Compose dependencies (Core UI)
implementation(compose.runtime)
implementation(compose.foundation)
implementation(compose.material3)
implementation(compose.ui)
implementation(compose.components.resources)
implementation(compose.materialIconsExtended)
// DateTime for multiplatform time handling
implementation(libs.kotlinx.datetime)
// ViewModel lifecycle
implementation(libs.androidx.lifecycle.viewmodelCompose)
implementation(libs.androidx.lifecycle.runtimeCompose)
// Bundles (Cleaned up dependencies)
implementation(libs.bundles.kmp.common) // Coroutines, Serialization, DateTime
implementation(libs.bundles.ktor.client.common) // Ktor Client (Core, Auth, JSON, Logging)
implementation(libs.bundles.compose.common) // ViewModel & Lifecycle
// DI
implementation(libs.koin.core)
}
commonTest.dependencies {
implementation(libs.kotlin.test)
implementation(libs.kotlinx.coroutines.test)
implementation("io.ktor:ktor-client-mock:${libs.versions.ktor.get()}")
implementation(libs.ktor.client.mock)
}
jvmTest.dependencies {
@@ -98,10 +83,6 @@ kotlin {
jsMain.dependencies {
implementation(libs.ktor.client.js)
implementation(libs.ktor.client.auth)
implementation(libs.kotlinx.coroutines.core)
implementation(libs.kotlinx.serialization.json)
implementation(libs.kotlinx.datetime)
}
// WASM SourceSet, nur wenn aktiviert
@@ -110,12 +91,10 @@ kotlin {
wasmJsMain.dependencies {
implementation(libs.ktor.client.js) // WASM verwendet JS-Client [cite: 7]
// ✅ HINZUFÜGEN: Compose für shared UI components für WASM
implementation("org.jetbrains.compose.runtime:runtime:1.10.0-rc02")
implementation("org.jetbrains.compose.foundation:foundation:1.10.0-rc02")
implementation("org.jetbrains.compose.material3:material3:1.9.0-beta03")
// Compose für shared UI components für WASM
implementation(compose.runtime)
implementation(compose.foundation)
implementation(compose.material3)
}
}
}
@@ -55,30 +55,16 @@ kotlin {
implementation(compose.components.resources)
implementation(compose.materialIconsExtended)
// Ktor client for HTTP calls
implementation(libs.ktor.client.core)
implementation(libs.ktor.client.contentNegotiation)
implementation(libs.ktor.client.serialization.kotlinx.json)
implementation(libs.ktor.client.logging)
implementation(libs.ktor.client.auth)
// Coroutines and serialization
implementation(libs.kotlinx.coroutines.core)
implementation(libs.kotlinx.serialization.json)
// DateTime for multiplatform time handling
implementation(libs.kotlinx.datetime)
// ViewModel lifecycle
implementation(libs.androidx.lifecycle.viewmodelCompose)
implementation(libs.androidx.lifecycle.runtimeCompose)
// Bundles (Cleaned up dependencies)
implementation(libs.bundles.kmp.common) // Coroutines, Serialization, DateTime
implementation(libs.bundles.ktor.client.common) // Ktor Client (Core, Auth, JSON, Logging)
implementation(libs.bundles.compose.common) // ViewModel & Lifecycle
}
commonTest.dependencies {
implementation(libs.kotlin.test)
implementation(libs.kotlinx.coroutines.test)
implementation("io.ktor:ktor-client-mock:${libs.versions.ktor.get()}")
implementation(libs.ktor.client.mock)
}
jvmTest.dependencies {
@@ -93,10 +79,6 @@ kotlin {
jsMain.dependencies {
implementation(libs.ktor.client.js)
implementation(libs.ktor.client.auth)
implementation(libs.kotlinx.coroutines.core)
implementation(libs.kotlinx.serialization.json)
implementation(libs.kotlinx.datetime)
}
// WASM SourceSet, nur wenn aktiviert
@@ -105,7 +87,7 @@ kotlin {
wasmJsMain.dependencies {
implementation(libs.ktor.client.js) // WASM verwendet JS-Client [cite: 7]
// ✅ HINZUFÜGEN: Compose für shared UI components für WASM
// Compose für shared UI components für WASM
implementation(compose.runtime)
implementation(compose.foundation)
implementation(compose.material3)
+14 -24
View File
@@ -49,32 +49,26 @@ kotlin {
implementation(projects.frontend.shared)
// Compose dependencies
implementation("org.jetbrains.compose.foundation:foundation:1.10.0-rc02")
implementation("org.jetbrains.compose.runtime:runtime:1.10.0-rc02")
implementation("org.jetbrains.compose.material3:material3:1.9.0-beta03")
implementation("org.jetbrains.compose.ui:ui:1.10.0-rc02")
implementation("org.jetbrains.compose.components:components-resources:1.10.0-rc02")
implementation("org.jetbrains.compose.material:material-icons-extended:1.7.3")
implementation(compose.foundation)
implementation(compose.runtime)
implementation(compose.material3)
implementation(compose.ui)
implementation(compose.components.resources)
implementation(compose.materialIconsExtended)
// Ktor client for HTTP calls
implementation(libs.ktor.client.core)
// Coroutines and serialization
implementation(libs.kotlinx.coroutines.core)
// Bundles (Cleaned up dependencies)
implementation(libs.bundles.kmp.common) // Coroutines, Serialization, DateTime
implementation(libs.bundles.ktor.client.common) // Ktor Client (Core, Auth, JSON, Logging)
implementation(libs.bundles.compose.common) // ViewModel & Lifecycle
// DI (Koin) for resolving apiClient from container
implementation(libs.koin.core)
// ViewModel lifecycle
implementation(libs.bundles.compose.common)
}
commonTest.dependencies {
implementation(libs.kotlin.test)
implementation(libs.kotlinx.coroutines.test)
implementation(libs.ktor.client.mock)
}
jvmTest.dependencies {
@@ -85,13 +79,10 @@ kotlin {
jvmMain.dependencies {
implementation(libs.ktor.client.cio)
// Auth-Models Zugriff (nur für JVM)
//implementation(project(":infrastructure:auth:auth-client"))
}
jsMain.dependencies {
implementation(libs.ktor.client.js)
}
// WASM SourceSet, nur wenn aktiviert
@@ -100,11 +91,10 @@ kotlin {
wasmJsMain.dependencies {
implementation(libs.ktor.client.js) // WASM verwendet JS-Client [cite: 7]
// ✅ HINZUFÜGEN: Compose für shared UI components für WASM
implementation("org.jetbrains.compose.runtime:runtime:1.10.0-rc02")
implementation("org.jetbrains.compose.foundation:foundation:1.10.0-rc02")
implementation("org.jetbrains.compose.material3:material3:1.9.0-beta03")
// Compose für shared UI components für WASM
implementation(compose.runtime)
implementation(compose.foundation)
implementation(compose.material3)
}
}
}