i have a data class for store in db.
@kotlinx.serialization.Serializable
data class SavedCalculation(
override val id: String,
val model1: Model1,
val model2: Model2
):org.kodein.db.model.orm.Metadata {
}
@kotlinx.serialization.Serializable
data class Model1(
var attr1: String = "",
var attr2: String = "",
)
@kotlinx.serialization.Serializable
data class Model2(
var attr1: String = "",
var attr2: String = "",
)
if i call my savedCalculation object in my view model;
var saved = mutableStateOf<List<SavedCalculation>>(listOf())
private set
fun load(){
viewModelScope.launch {
useCases.load.invoke().collect { response ->
when(response){
is Response.Loading -> {
}
is Response.Success -> {
saved.value = response.data
saved.value[0].model1 -> **this causes error.**
}
is Response.Error -> {}
}
}
}
}
Error:
Cannot access 'org.kodein.db.model.orm.HasMetadata' which is a supertype of 'com.myapp.data.model.SavedCalculationDto'. Check your module classpath for missing or conflicting dependencies
my main and data packages are seperate gradle build files, so kodeindb cant access dependencies from my view model. i simply add same kodeindb dependencies in my build.gradle.kts, my problem solved.
//into viewmodel package gradle file:
implementation("org.kodein.db:kodein-db-jvm:0.8.1-beta")
implementation("org.kodein.db:kodein-db-serializer-kotlinx:0.8.1-beta")
implementation("org.kodein.db:kodein-leveldb-jni-jvm-windows:0.8.1-beta")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.2")