Pablo
12/03/2024, 11:14 PMAppDatabaseConstructor.kt:5:22 'actual object AppDatabaseConstructor : RoomDatabaseConstructor<BusStopsDatabase>' has no corresponding expected declaration
I'm adding the gradle file in a thread herePablo
12/03/2024, 11:18 PMplugins {
alias(libs.plugins.kotlinMultiplatform)
alias(libs.plugins.composeMultiplatform)
alias(libs.plugins.composeCompiler)
// Room
alias(libs.plugins.androidx.room)
alias(libs.plugins.ksp)
}
kotlin {
jvm("desktop")
sourceSets {
val desktopMain by getting
commonMain.dependencies {
implementation(compose.runtime)
implementation(compose.foundation)
implementation(compose.material)
implementation(compose.ui)
implementation(compose.components.resources)
implementation(compose.components.uiToolingPreview)
implementation(libs.androidx.lifecycle.viewmodel)
implementation(libs.androidx.lifecycle.runtime.compose)
//koin
implementation(project.dependencies.platform(libs.koin.bom))
implementation(libs.koin.core)
implementation(libs.koin.compose)
implementation(libs.koin.compose.viewmodel.navigation)
//retrofit
implementation("com.squareup.retrofit2:retrofit:2.11.0")
implementation("com.squareup.retrofit2:converter-jackson:2.11.0")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.18.2")
implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.13.0")
//room
implementation(libs.androidx.sqlite.bundled)
implementation(libs.androidx.room.runtime)
}
desktopMain.dependencies {
implementation(compose.desktop.currentOs)
implementation(libs.kotlinx.coroutines.swing)
}
}
}
dependencies {
add("kspDesktop", libs.androidx.room.compiler)
}
room {
schemaDirectory("$projectDir/schemas")
}
compose.desktop {
application {
mainClass = "com.package.MainKt"
nativeDistributions {
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
packageName = "com.package"
packageVersion = "1.0.0"
}
}
}
Sterling Albury
12/04/2024, 2:50 AM@ConstructedBy(FooDatabaseConstructor::class)
abstract class FooDatabase : RoomDatabase() {}
@Suppress("NO_ACTUAL_FOR_EXPECT")
expect object FooDatabaseConstructor : RoomDatabaseConstructor<FooDatabase> {
override fun initialize(): FooDatabase
}
I don't remember where I learned this but hopefully it works for youPablo
12/04/2024, 7:31 AM@Database(entities = [BusStopEntity::class], version = 1)
@ConstructedBy(AppDatabaseConstructor::class)
abstract class BusStopsDatabase : RoomDatabase() {
abstract fun busStopDao(): BusStopsDao
}
// The Room compiler generates the `actual` implementations.
@Suppress("NO_ACTUAL_FOR_EXPECT")
expect object AppDatabaseConstructor : RoomDatabaseConstructor<BusStopsDatabase> {
override fun initialize(): BusStopsDatabase
}
Sterling Albury
12/04/2024, 8:09 AMactual
declarations? the error is pointing to a file in the build folder?Pablo
12/04/2024, 8:16 AMPablo
12/04/2024, 8:17 AMPablo
12/04/2024, 8:18 AMpublic actual object AppDatabaseConstructor : RoomDatabaseConstructor<BusStopsDatabase> {
actual override fun initialize(): BusStopsDatabase =
com.mypackage.`data`.datasource.local.BusStopsDatabase_Impl()
}
Pablo
12/04/2024, 8:18 AMSterling Albury
12/04/2024, 8:32 AMPablo
12/04/2024, 8:32 AMPablo
12/04/2024, 8:32 AMSterling Albury
12/04/2024, 8:33 AMexpect object AppDatabaseConstructor : RoomDatabaseConstructor<BusStopsDatabase> { }
should be in common main for sure. I doubt repos or datasources are doing anythingPablo
12/04/2024, 8:33 AMSterling Albury
12/04/2024, 8:33 AMabstract class BusStopsDatabase : RoomDatabase() {
stuff should be in commonMainPablo
12/04/2024, 8:33 AMPablo
12/04/2024, 8:34 AMSterling Albury
12/04/2024, 8:35 AMSterling Albury
12/04/2024, 8:36 AMPablo
12/04/2024, 11:33 AMPablo
12/04/2024, 11:33 AMPablo
12/04/2024, 12:27 PMPablo
12/04/2024, 12:28 PMSterling Albury
12/04/2024, 7:01 PMsourceSets {
val desktopMain by getting
commonMain.dependencies {}
...
}
then in your src folder you can add a commonMain
folder for common kotlin sources and a desktopMain
for the desktop specific files. the desktop source files will be able to see the stuff in the common sourcesSterling Albury
12/04/2024, 10:42 PM