diff --git a/client/src/commonMain/kotlin/moe/lava/banksia/client/data/stop/StopLocalDataSource.kt b/client/src/commonMain/kotlin/moe/lava/banksia/client/data/stop/StopLocalDataSource.kt deleted file mode 100644 index 486aae0..0000000 --- a/client/src/commonMain/kotlin/moe/lava/banksia/client/data/stop/StopLocalDataSource.kt +++ /dev/null @@ -1,12 +0,0 @@ -package moe.lava.banksia.client.data.stop - -import moe.lava.banksia.model.Stop -import moe.lava.banksia.room.dao.RouteDao -import moe.lava.banksia.room.dao.StopDao -import moe.lava.banksia.room.entity.asEntity - -class StopLocalDataSource(private val dao: StopDao, private val routeDao: RouteDao) { - suspend fun get(id: String) = dao.get(id) - suspend fun getByRoute(id: String) = routeDao.stops(id) - suspend fun save(vararg stops: Stop) = dao.insertOrReplaceAll(*stops.map { it.asEntity() }.toTypedArray()) -} diff --git a/server/build.gradle.kts b/server/build.gradle.kts index 39f75f3..e982c8c 100644 --- a/server/build.gradle.kts +++ b/server/build.gradle.kts @@ -39,4 +39,6 @@ dependencies { implementation(libs.sqlite.bundled) testImplementation(libs.ktor.server.tests) testImplementation(libs.kotlin.test.junit) + + implementation(projects.shared.room) } diff --git a/server/src/main/kotlin/moe/lava/banksia/server/Application.kt b/server/src/main/kotlin/moe/lava/banksia/server/Application.kt index 2d33793..eb0de33 100644 --- a/server/src/main/kotlin/moe/lava/banksia/server/Application.kt +++ b/server/src/main/kotlin/moe/lava/banksia/server/Application.kt @@ -19,12 +19,11 @@ import kotlinx.datetime.LocalDate import kotlinx.datetime.TimeZone import kotlinx.datetime.todayIn import moe.lava.banksia.Constants -import moe.lava.banksia.di.CommonModules +import moe.lava.banksia.core.room.dao.RouteDao +import moe.lava.banksia.core.room.dao.StopDao +import moe.lava.banksia.core.room.dao.StopTimeDao +import moe.lava.banksia.core.room.dao.VersionMetadataDao import moe.lava.banksia.model.atDate -import moe.lava.banksia.room.dao.RouteDao -import moe.lava.banksia.room.dao.StopDao -import moe.lava.banksia.room.dao.StopTimeDao -import moe.lava.banksia.room.dao.VersionMetadataDao import moe.lava.banksia.server.di.ServerModules import moe.lava.banksia.server.gtfsrt.GtfsrtService import moe.lava.banksia.util.serialise @@ -44,14 +43,12 @@ fun Application.module() { } install(Koin) { modules(module { single { log } }) - modules(CommonModules, ServerModules) + modules(ServerModules) } + val gtfsr by inject() @Suppress("KotlinConstantConditions") - if (!Constants.devMode) { - val gtfsr by inject() - launch { gtfsr.start(this, true) } - } + launch { gtfsr.start(this, !Constants.devMode) } routing { if (Constants.devMode) { diff --git a/server/src/main/kotlin/moe/lava/banksia/server/GtfsDataFixer.kt b/server/src/main/kotlin/moe/lava/banksia/server/GtfsDataFixer.kt index d3d307e..10d6f11 100644 --- a/server/src/main/kotlin/moe/lava/banksia/server/GtfsDataFixer.kt +++ b/server/src/main/kotlin/moe/lava/banksia/server/GtfsDataFixer.kt @@ -1,7 +1,7 @@ package moe.lava.banksia.server -import moe.lava.banksia.room.Database -import moe.lava.banksia.room.entity.StopEntity +import moe.lava.banksia.core.room.Database +import moe.lava.banksia.core.room.entity.StopEntity import moe.lava.banksia.util.log import java.security.MessageDigest diff --git a/server/src/main/kotlin/moe/lava/banksia/server/GtfsImporter.kt b/server/src/main/kotlin/moe/lava/banksia/server/GtfsImporter.kt index 04ea373..060457a 100644 --- a/server/src/main/kotlin/moe/lava/banksia/server/GtfsImporter.kt +++ b/server/src/main/kotlin/moe/lava/banksia/server/GtfsImporter.kt @@ -3,6 +3,8 @@ package moe.lava.banksia.server import androidx.room.immediateTransaction import androidx.room.useWriterConnection import io.ktor.util.logging.Logger +import moe.lava.banksia.core.room.Database +import moe.lava.banksia.core.room.entity.asEntity import moe.lava.banksia.model.Route import moe.lava.banksia.model.Service import moe.lava.banksia.model.ServiceException @@ -10,8 +12,6 @@ import moe.lava.banksia.model.Shape import moe.lava.banksia.model.Stop import moe.lava.banksia.model.StopTime import moe.lava.banksia.model.Trip -import moe.lava.banksia.room.Database -import moe.lava.banksia.room.entity.asEntity import moe.lava.banksia.server.gtfs.GtfsData import moe.lava.banksia.server.gtfs.GtfsParser import kotlin.time.Clock diff --git a/server/src/main/kotlin/moe/lava/banksia/server/di/ServerModules.kt b/server/src/main/kotlin/moe/lava/banksia/server/di/ServerModules.kt index 6ee4365..7c7fc0b 100644 --- a/server/src/main/kotlin/moe/lava/banksia/server/di/ServerModules.kt +++ b/server/src/main/kotlin/moe/lava/banksia/server/di/ServerModules.kt @@ -1,6 +1,7 @@ package moe.lava.banksia.server.di import io.ktor.client.HttpClient +import moe.lava.banksia.core.room.roomDiModule import moe.lava.banksia.server.GtfsDataFixer import moe.lava.banksia.server.GtfsImporter import moe.lava.banksia.server.gtfs.GtfsParser @@ -9,6 +10,8 @@ import org.koin.core.module.dsl.singleOf import org.koin.dsl.module val ServerModules = module { + includes(roomDiModule) + single { HttpClient() } singleOf(::GtfsParser) singleOf(::GtfsrtService) diff --git a/settings.gradle.kts b/settings.gradle.kts index 72f0696..7096522 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -32,11 +32,12 @@ dependencyResolutionManagement { } include(":androidApp") -include(":client") include(":server") include(":server:gtfs") include(":server:gtfs_rt") include(":shared") +include(":shared:data") +include(":shared:room") include(":ui") include(":ui:maps") include(":ui:shared") diff --git a/client/build.gradle.kts b/shared/data/build.gradle.kts similarity index 67% rename from client/build.gradle.kts rename to shared/data/build.gradle.kts index 29dbc08..1d4b956 100644 --- a/client/build.gradle.kts +++ b/shared/data/build.gradle.kts @@ -4,11 +4,12 @@ plugins { alias(libs.plugins.kotlinMultiplatform) alias(libs.plugins.kotlinSerialization) alias(libs.plugins.androidMultiplatformLibrary) + alias(libs.plugins.ksp) } kotlin { android { - namespace = "moe.lava.banksia.client" + namespace = "moe.lava.banksia.core.data" compileSdk = libs.versions.android.compileSdk.get().toInt() compilerOptions { @@ -23,21 +24,29 @@ kotlin { iosArm64() iosSimulatorArm64() + jvm() + sourceSets { androidMain.dependencies { - implementation(libs.compose.ui.tooling.preview) - implementation(libs.androidx.activity.compose) - implementation(libs.kotlinx.coroutines.android) - implementation(libs.play.services.location) + implementation(libs.koin.compose) + implementation(libs.ktor.client.okhttp) } commonMain.dependencies { + implementation(libs.okio) implementation(libs.koin.core) - implementation(libs.kotlinx.coroutines.core) - implementation(libs.kotlinx.datetime) implementation(libs.ktor.client.core) implementation(libs.ktor.client.contentnegotiation) implementation(libs.ktor.serialization.kotlinx.json) + implementation(libs.kotlinx.coroutines.core) + implementation(libs.kotlinx.datetime) + implementation(libs.kotlinx.serialization.json) + implementation(libs.kotlinx.serialization.protobuf) + implementation(projects.shared) + implementation(projects.shared.room) + } + iosMain.dependencies { + implementation(libs.ktor.client.darwin) } } } diff --git a/client/src/commonMain/kotlin/moe/lava/banksia/client/di/ClientModule.kt b/shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/DataDiModule.kt similarity index 65% rename from client/src/commonMain/kotlin/moe/lava/banksia/client/di/ClientModule.kt rename to shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/DataDiModule.kt index f22c7db..86694cc 100644 --- a/client/src/commonMain/kotlin/moe/lava/banksia/client/di/ClientModule.kt +++ b/shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/DataDiModule.kt @@ -1,4 +1,4 @@ -package moe.lava.banksia.client.di +package moe.lava.banksia.core.data import io.ktor.client.HttpClient import io.ktor.client.plugins.HttpSend @@ -8,21 +8,24 @@ import io.ktor.client.plugins.plugin import io.ktor.serialization.kotlinx.json.json import kotlinx.serialization.json.Json import moe.lava.banksia.Constants -import moe.lava.banksia.client.data.route.RouteLocalDataSource -import moe.lava.banksia.client.data.route.RouteRemoteDataSource -import moe.lava.banksia.client.data.stop.StopLocalDataSource -import moe.lava.banksia.client.data.stop.StopRemoteDataSource -import moe.lava.banksia.client.data.stoptime.StopTimeLocalDataSource -import moe.lava.banksia.client.data.stoptime.StopTimeRemoteDataSource -import moe.lava.banksia.client.repository.RouteRepository -import moe.lava.banksia.client.repository.StopRepository -import moe.lava.banksia.client.repository.StopTimeRepository +import moe.lava.banksia.core.data.repositories.RouteRepository +import moe.lava.banksia.core.data.repositories.StopRepository +import moe.lava.banksia.core.data.repositories.StopTimeRepository +import moe.lava.banksia.core.data.sources.route.RouteLocalDataSource +import moe.lava.banksia.core.data.sources.route.RouteRemoteDataSource +import moe.lava.banksia.core.data.sources.stop.StopLocalDataSource +import moe.lava.banksia.core.data.sources.stop.StopRemoteDataSource +import moe.lava.banksia.core.data.sources.stoptime.StopTimeLocalDataSource +import moe.lava.banksia.core.data.sources.stoptime.StopTimeRemoteDataSource +import moe.lava.banksia.core.room.roomDiModule import moe.lava.banksia.data.ptv.PtvService import moe.lava.banksia.util.log import org.koin.core.module.dsl.singleOf import org.koin.dsl.module -val ClientModule = module { +val dataDiModule = module { + includes(roomDiModule) + // HTTP Clients singleOf(::PtvService) single { diff --git a/client/src/commonMain/kotlin/moe/lava/banksia/client/repository/RouteRepository.kt b/shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/repositories/RouteRepository.kt similarity index 71% rename from client/src/commonMain/kotlin/moe/lava/banksia/client/repository/RouteRepository.kt rename to shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/repositories/RouteRepository.kt index 22a6bcc..fdeb95f 100644 --- a/client/src/commonMain/kotlin/moe/lava/banksia/client/repository/RouteRepository.kt +++ b/shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/repositories/RouteRepository.kt @@ -1,11 +1,11 @@ -package moe.lava.banksia.client.repository +package moe.lava.banksia.core.data.repositories import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock -import moe.lava.banksia.client.data.route.RouteLocalDataSource -import moe.lava.banksia.client.data.route.RouteRemoteDataSource +import moe.lava.banksia.core.data.sources.route.RouteLocalDataSource +import moe.lava.banksia.core.data.sources.route.RouteRemoteDataSource -class RouteRepository( +class RouteRepository internal constructor( private val local: RouteLocalDataSource, private val remote: RouteRemoteDataSource, ) { diff --git a/client/src/commonMain/kotlin/moe/lava/banksia/client/repository/StopRepository.kt b/shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/repositories/StopRepository.kt similarity index 69% rename from client/src/commonMain/kotlin/moe/lava/banksia/client/repository/StopRepository.kt rename to shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/repositories/StopRepository.kt index 690616a..d83a9cd 100644 --- a/client/src/commonMain/kotlin/moe/lava/banksia/client/repository/StopRepository.kt +++ b/shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/repositories/StopRepository.kt @@ -1,11 +1,11 @@ -package moe.lava.banksia.client.repository +package moe.lava.banksia.core.data.repositories import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock -import moe.lava.banksia.client.data.stop.StopLocalDataSource -import moe.lava.banksia.client.data.stop.StopRemoteDataSource +import moe.lava.banksia.core.data.sources.stop.StopLocalDataSource +import moe.lava.banksia.core.data.sources.stop.StopRemoteDataSource -class StopRepository( +class StopRepository internal constructor( private val local: StopLocalDataSource, private val remote: StopRemoteDataSource, ) { diff --git a/client/src/commonMain/kotlin/moe/lava/banksia/client/repository/StopTimeRepository.kt b/shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/repositories/StopTimeRepository.kt similarity index 55% rename from client/src/commonMain/kotlin/moe/lava/banksia/client/repository/StopTimeRepository.kt rename to shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/repositories/StopTimeRepository.kt index 4f54840..50cc66a 100644 --- a/client/src/commonMain/kotlin/moe/lava/banksia/client/repository/StopTimeRepository.kt +++ b/shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/repositories/StopTimeRepository.kt @@ -1,10 +1,10 @@ -package moe.lava.banksia.client.repository +package moe.lava.banksia.core.data.repositories -import moe.lava.banksia.client.data.stoptime.StopTimeLocalDataSource -import moe.lava.banksia.client.data.stoptime.StopTimeRemoteDataSource +import moe.lava.banksia.core.data.sources.stoptime.StopTimeLocalDataSource +import moe.lava.banksia.core.data.sources.stoptime.StopTimeRemoteDataSource import moe.lava.banksia.model.StopTimeDated -class StopTimeRepository( +class StopTimeRepository internal constructor( private val local: StopTimeLocalDataSource, private val remote: StopTimeRemoteDataSource, ) { diff --git a/client/src/commonMain/kotlin/moe/lava/banksia/client/data/route/RouteLocalDataSource.kt b/shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/sources/route/RouteLocalDataSource.kt similarity index 53% rename from client/src/commonMain/kotlin/moe/lava/banksia/client/data/route/RouteLocalDataSource.kt rename to shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/sources/route/RouteLocalDataSource.kt index e89d4e9..79d432a 100644 --- a/client/src/commonMain/kotlin/moe/lava/banksia/client/data/route/RouteLocalDataSource.kt +++ b/shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/sources/route/RouteLocalDataSource.kt @@ -1,10 +1,10 @@ -package moe.lava.banksia.client.data.route +package moe.lava.banksia.core.data.sources.route +import moe.lava.banksia.core.room.dao.RouteDao +import moe.lava.banksia.core.room.entity.asEntity import moe.lava.banksia.model.Route -import moe.lava.banksia.room.dao.RouteDao -import moe.lava.banksia.room.entity.asEntity -class RouteLocalDataSource(private val dao: RouteDao) { +internal class RouteLocalDataSource(private val dao: RouteDao) { suspend fun get(id: String) = dao.get(id) suspend fun getAll() = dao.getAll() suspend fun save(vararg routes: Route) = dao.insertOrReplaceAll(*routes.map { it.asEntity() }.toTypedArray()) diff --git a/client/src/commonMain/kotlin/moe/lava/banksia/client/data/route/RouteRemoteDataSource.kt b/shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/sources/route/RouteRemoteDataSource.kt similarity index 71% rename from client/src/commonMain/kotlin/moe/lava/banksia/client/data/route/RouteRemoteDataSource.kt rename to shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/sources/route/RouteRemoteDataSource.kt index cbe9804..a111e82 100644 --- a/client/src/commonMain/kotlin/moe/lava/banksia/client/data/route/RouteRemoteDataSource.kt +++ b/shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/sources/route/RouteRemoteDataSource.kt @@ -1,11 +1,11 @@ -package moe.lava.banksia.client.data.route +package moe.lava.banksia.core.data.sources.route import io.ktor.client.HttpClient import io.ktor.client.call.body import io.ktor.client.request.get import moe.lava.banksia.model.Route -class RouteRemoteDataSource(val client: HttpClient) { +internal class RouteRemoteDataSource(val client: HttpClient) { suspend fun get(id: String) = client.get("routes/${id}").body() suspend fun getAll() = client.get("routes").body>() } diff --git a/shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/sources/stop/StopLocalDataSource.kt b/shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/sources/stop/StopLocalDataSource.kt new file mode 100644 index 0000000..c8b429b --- /dev/null +++ b/shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/sources/stop/StopLocalDataSource.kt @@ -0,0 +1,12 @@ +package moe.lava.banksia.core.data.sources.stop + +import moe.lava.banksia.core.room.dao.RouteDao +import moe.lava.banksia.core.room.dao.StopDao +import moe.lava.banksia.core.room.entity.asEntity +import moe.lava.banksia.model.Stop + +internal class StopLocalDataSource(private val dao: StopDao, private val routeDao: RouteDao) { + suspend fun get(id: String) = dao.get(id) + suspend fun getByRoute(id: String) = routeDao.stops(id) + suspend fun save(vararg stops: Stop) = dao.insertOrReplaceAll(*stops.map { it.asEntity() }.toTypedArray()) +} diff --git a/client/src/commonMain/kotlin/moe/lava/banksia/client/data/stop/StopRemoteDataSource.kt b/shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/sources/stop/StopRemoteDataSource.kt similarity index 73% rename from client/src/commonMain/kotlin/moe/lava/banksia/client/data/stop/StopRemoteDataSource.kt rename to shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/sources/stop/StopRemoteDataSource.kt index 47c2f80..c63f718 100644 --- a/client/src/commonMain/kotlin/moe/lava/banksia/client/data/stop/StopRemoteDataSource.kt +++ b/shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/sources/stop/StopRemoteDataSource.kt @@ -1,11 +1,11 @@ -package moe.lava.banksia.client.data.stop +package moe.lava.banksia.core.data.sources.stop import io.ktor.client.HttpClient import io.ktor.client.call.body import io.ktor.client.request.get import moe.lava.banksia.model.Stop -class StopRemoteDataSource(val client: HttpClient) { +internal class StopRemoteDataSource(val client: HttpClient) { suspend fun get(id: String) = client.get("stops/${id}").body() suspend fun getByRoute(id: String) = client.get("route_stops/${id}").body>() } diff --git a/client/src/commonMain/kotlin/moe/lava/banksia/client/data/stoptime/StopTimeLocalDataSource.kt b/shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/sources/stoptime/StopTimeLocalDataSource.kt similarity index 83% rename from client/src/commonMain/kotlin/moe/lava/banksia/client/data/stoptime/StopTimeLocalDataSource.kt rename to shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/sources/stoptime/StopTimeLocalDataSource.kt index 3640b1f..cf09cc0 100644 --- a/client/src/commonMain/kotlin/moe/lava/banksia/client/data/stoptime/StopTimeLocalDataSource.kt +++ b/shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/sources/stoptime/StopTimeLocalDataSource.kt @@ -1,15 +1,15 @@ -package moe.lava.banksia.client.data.stoptime +package moe.lava.banksia.core.data.sources.stoptime import kotlinx.datetime.LocalDate import kotlinx.datetime.TimeZone import kotlinx.datetime.todayIn +import moe.lava.banksia.core.room.dao.StopTimeDao import moe.lava.banksia.model.StopTimeDated import moe.lava.banksia.model.atDate -import moe.lava.banksia.room.dao.StopTimeDao import moe.lava.banksia.util.serialise import kotlin.time.Clock -class StopTimeLocalDataSource( +internal class StopTimeLocalDataSource( private val stopTimeDao: StopTimeDao, ) { suspend fun getAtStop( diff --git a/client/src/commonMain/kotlin/moe/lava/banksia/client/data/stoptime/StopTimeRemoteDataSource.kt b/shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/sources/stoptime/StopTimeRemoteDataSource.kt similarity index 92% rename from client/src/commonMain/kotlin/moe/lava/banksia/client/data/stoptime/StopTimeRemoteDataSource.kt rename to shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/sources/stoptime/StopTimeRemoteDataSource.kt index baf26e7..ef841bb 100644 --- a/client/src/commonMain/kotlin/moe/lava/banksia/client/data/stoptime/StopTimeRemoteDataSource.kt +++ b/shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/sources/stoptime/StopTimeRemoteDataSource.kt @@ -1,4 +1,4 @@ -package moe.lava.banksia.client.data.stoptime +package moe.lava.banksia.core.data.sources.stoptime import io.ktor.client.HttpClient import io.ktor.client.call.body @@ -10,7 +10,7 @@ import kotlinx.datetime.todayIn import moe.lava.banksia.model.StopTimeDated import kotlin.time.Clock -class StopTimeRemoteDataSource( +internal class StopTimeRemoteDataSource( private val client: HttpClient, ) { suspend fun getAtStop( diff --git a/client/src/commonMain/kotlin/moe/lava/banksia/client/data/trip/TripRemoteDataSource.kt b/shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/sources/trip/TripRemoteDataSource.kt similarity index 82% rename from client/src/commonMain/kotlin/moe/lava/banksia/client/data/trip/TripRemoteDataSource.kt rename to shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/sources/trip/TripRemoteDataSource.kt index 8b46fbd..2055414 100644 --- a/client/src/commonMain/kotlin/moe/lava/banksia/client/data/trip/TripRemoteDataSource.kt +++ b/shared/data/src/commonMain/kotlin/moe/lava/banksia/core/data/sources/trip/TripRemoteDataSource.kt @@ -1,4 +1,4 @@ -package moe.lava.banksia.client.data.trip +package moe.lava.banksia.core.data.sources.trip import io.ktor.client.HttpClient import kotlinx.datetime.DayOfWeek @@ -7,7 +7,7 @@ import kotlinx.datetime.todayIn import moe.lava.banksia.model.Trip import kotlin.time.Clock -class TripRemoteDataSource( +internal class TripRemoteDataSource( private val client: HttpClient, ) { suspend fun get( diff --git a/shared/room/build.gradle.kts b/shared/room/build.gradle.kts new file mode 100644 index 0000000..7f0f5eb --- /dev/null +++ b/shared/room/build.gradle.kts @@ -0,0 +1,54 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + +plugins { + alias(libs.plugins.kotlinMultiplatform) + alias(libs.plugins.kotlinSerialization) + alias(libs.plugins.androidMultiplatformLibrary) + alias(libs.plugins.ksp) + alias(libs.plugins.room) +} + +room { + schemaDirectory("$projectDir/schemas") +} + +kotlin { + android { + namespace = "moe.lava.banksia.core.room" + compileSdk = libs.versions.android.compileSdk.get().toInt() + + compilerOptions { + jvmTarget.set(JvmTarget.JVM_11) + } + } + + compilerOptions { + freeCompilerArgs.add("-opt-in=kotlin.time.ExperimentalTime") + } + + iosArm64() + iosSimulatorArm64() + + jvm() + + sourceSets { + commonMain.dependencies { + implementation(libs.okio) + implementation(libs.koin.core) + implementation(libs.kotlinx.coroutines.core) + implementation(libs.kotlinx.datetime) + implementation(libs.kotlinx.serialization.json) + implementation(libs.room.runtime) + implementation(libs.sqlite.bundled) + + implementation(projects.shared) + } + } +} + +dependencies { + add("kspAndroid", libs.room.compiler) + add("kspIosArm64", libs.room.compiler) + add("kspIosSimulatorArm64", libs.room.compiler) + add("kspJvm", libs.room.compiler) +} diff --git a/shared/schemas/moe.lava.banksia.room.Database/1.json b/shared/room/schemas/moe.lava.banksia.core.room.Database/1.json similarity index 100% rename from shared/schemas/moe.lava.banksia.room.Database/1.json rename to shared/room/schemas/moe.lava.banksia.core.room.Database/1.json diff --git a/shared/schemas/moe.lava.banksia.room.Database/10.json b/shared/room/schemas/moe.lava.banksia.core.room.Database/10.json similarity index 100% rename from shared/schemas/moe.lava.banksia.room.Database/10.json rename to shared/room/schemas/moe.lava.banksia.core.room.Database/10.json diff --git a/shared/schemas/moe.lava.banksia.room.Database/11.json b/shared/room/schemas/moe.lava.banksia.core.room.Database/11.json similarity index 100% rename from shared/schemas/moe.lava.banksia.room.Database/11.json rename to shared/room/schemas/moe.lava.banksia.core.room.Database/11.json diff --git a/shared/schemas/moe.lava.banksia.room.Database/2.json b/shared/room/schemas/moe.lava.banksia.core.room.Database/2.json similarity index 100% rename from shared/schemas/moe.lava.banksia.room.Database/2.json rename to shared/room/schemas/moe.lava.banksia.core.room.Database/2.json diff --git a/shared/schemas/moe.lava.banksia.room.Database/3.json b/shared/room/schemas/moe.lava.banksia.core.room.Database/3.json similarity index 100% rename from shared/schemas/moe.lava.banksia.room.Database/3.json rename to shared/room/schemas/moe.lava.banksia.core.room.Database/3.json diff --git a/shared/schemas/moe.lava.banksia.room.Database/4.json b/shared/room/schemas/moe.lava.banksia.core.room.Database/4.json similarity index 100% rename from shared/schemas/moe.lava.banksia.room.Database/4.json rename to shared/room/schemas/moe.lava.banksia.core.room.Database/4.json diff --git a/shared/schemas/moe.lava.banksia.room.Database/5.json b/shared/room/schemas/moe.lava.banksia.core.room.Database/5.json similarity index 100% rename from shared/schemas/moe.lava.banksia.room.Database/5.json rename to shared/room/schemas/moe.lava.banksia.core.room.Database/5.json diff --git a/shared/schemas/moe.lava.banksia.room.Database/6.json b/shared/room/schemas/moe.lava.banksia.core.room.Database/6.json similarity index 100% rename from shared/schemas/moe.lava.banksia.room.Database/6.json rename to shared/room/schemas/moe.lava.banksia.core.room.Database/6.json diff --git a/shared/schemas/moe.lava.banksia.room.Database/7.json b/shared/room/schemas/moe.lava.banksia.core.room.Database/7.json similarity index 100% rename from shared/schemas/moe.lava.banksia.room.Database/7.json rename to shared/room/schemas/moe.lava.banksia.core.room.Database/7.json diff --git a/shared/schemas/moe.lava.banksia.room.Database/8.json b/shared/room/schemas/moe.lava.banksia.core.room.Database/8.json similarity index 100% rename from shared/schemas/moe.lava.banksia.room.Database/8.json rename to shared/room/schemas/moe.lava.banksia.core.room.Database/8.json diff --git a/shared/schemas/moe.lava.banksia.room.Database/9.json b/shared/room/schemas/moe.lava.banksia.core.room.Database/9.json similarity index 100% rename from shared/schemas/moe.lava.banksia.room.Database/9.json rename to shared/room/schemas/moe.lava.banksia.core.room.Database/9.json diff --git a/shared/src/androidMain/kotlin/moe/lava/banksia/di/PlatformModule.android.kt b/shared/room/src/androidMain/kotlin/moe/lava/banksia/core/room/RoomDiModule.android.kt similarity index 71% rename from shared/src/androidMain/kotlin/moe/lava/banksia/di/PlatformModule.android.kt rename to shared/room/src/androidMain/kotlin/moe/lava/banksia/core/room/RoomDiModule.android.kt index 0447f4b..8cd01e6 100644 --- a/shared/src/androidMain/kotlin/moe/lava/banksia/di/PlatformModule.android.kt +++ b/shared/room/src/androidMain/kotlin/moe/lava/banksia/core/room/RoomDiModule.android.kt @@ -1,12 +1,10 @@ -package moe.lava.banksia.di +package moe.lava.banksia.core.room import android.content.Context import androidx.room.Room import androidx.room.RoomDatabase -import moe.lava.banksia.room.Database import org.koin.core.parameter.ParametersHolder import org.koin.core.scope.Scope -import org.koin.dsl.module class AndroidDatabaseBuilder(val ctx: Context) : PlatformDatabaseBuilder { override fun getBuilder(): RoomDatabase.Builder { @@ -19,7 +17,5 @@ class AndroidDatabaseBuilder(val ctx: Context) : PlatformDatabaseBuilder { } } -actual fun Scope.provideDatabaseBuilder(p: ParametersHolder): PlatformDatabaseBuilder = +internal actual fun Scope.provideDatabaseBuilder(p: ParametersHolder): PlatformDatabaseBuilder = AndroidDatabaseBuilder(get()) - -internal actual val ExtPlatformModule = module { } diff --git a/shared/src/commonMain/kotlin/moe/lava/banksia/room/Database.kt b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/Database.kt similarity index 75% rename from shared/src/commonMain/kotlin/moe/lava/banksia/room/Database.kt rename to shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/Database.kt index 7c39ebf..006b749 100644 --- a/shared/src/commonMain/kotlin/moe/lava/banksia/room/Database.kt +++ b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/Database.kt @@ -1,4 +1,4 @@ -package moe.lava.banksia.room +package moe.lava.banksia.core.room import androidx.room.AutoMigration import androidx.room.RoomDatabase @@ -10,23 +10,23 @@ import androidx.sqlite.driver.bundled.BundledSQLiteDriver import androidx.sqlite.execSQL import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.IO -import moe.lava.banksia.room.converter.RouteTypeConverter -import moe.lava.banksia.room.dao.RouteDao -import moe.lava.banksia.room.dao.ServiceDao -import moe.lava.banksia.room.dao.ServiceExceptionDao -import moe.lava.banksia.room.dao.ShapeDao -import moe.lava.banksia.room.dao.StopDao -import moe.lava.banksia.room.dao.StopTimeDao -import moe.lava.banksia.room.dao.TripDao -import moe.lava.banksia.room.dao.VersionMetadataDao -import moe.lava.banksia.room.entity.RouteEntity -import moe.lava.banksia.room.entity.ServiceEntity -import moe.lava.banksia.room.entity.ServiceExceptionEntity -import moe.lava.banksia.room.entity.ShapeEntity -import moe.lava.banksia.room.entity.StopEntity -import moe.lava.banksia.room.entity.StopTimeEntity -import moe.lava.banksia.room.entity.TripEntity -import moe.lava.banksia.room.entity.VersionMetadataEntity +import moe.lava.banksia.core.room.converter.RouteTypeConverter +import moe.lava.banksia.core.room.dao.RouteDao +import moe.lava.banksia.core.room.dao.ServiceDao +import moe.lava.banksia.core.room.dao.ServiceExceptionDao +import moe.lava.banksia.core.room.dao.ShapeDao +import moe.lava.banksia.core.room.dao.StopDao +import moe.lava.banksia.core.room.dao.StopTimeDao +import moe.lava.banksia.core.room.dao.TripDao +import moe.lava.banksia.core.room.dao.VersionMetadataDao +import moe.lava.banksia.core.room.entity.RouteEntity +import moe.lava.banksia.core.room.entity.ServiceEntity +import moe.lava.banksia.core.room.entity.ServiceExceptionEntity +import moe.lava.banksia.core.room.entity.ShapeEntity +import moe.lava.banksia.core.room.entity.StopEntity +import moe.lava.banksia.core.room.entity.StopTimeEntity +import moe.lava.banksia.core.room.entity.TripEntity +import moe.lava.banksia.core.room.entity.VersionMetadataEntity import androidx.room.Database as DatabaseAnnotation @DatabaseAnnotation( diff --git a/shared/src/commonMain/kotlin/moe/lava/banksia/di/CommonModules.kt b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/RoomDiModule.kt similarity index 51% rename from shared/src/commonMain/kotlin/moe/lava/banksia/di/CommonModules.kt rename to shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/RoomDiModule.kt index 1a39cfb..67d4fd2 100644 --- a/shared/src/commonMain/kotlin/moe/lava/banksia/di/CommonModules.kt +++ b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/RoomDiModule.kt @@ -1,12 +1,14 @@ -package moe.lava.banksia.di +package moe.lava.banksia.core.room -import moe.lava.banksia.room.Database +import androidx.room.RoomDatabase +import org.koin.core.parameter.ParametersHolder +import org.koin.core.scope.Scope import org.koin.dsl.module -val CommonModules = module { - includes(PlatformModule) - +val roomDiModule = module { + single { provideDatabaseBuilder(it) } single { Database.build(get().getBuilder()) } + single { get().versionMetadataDao } single { get().routeDao } single { get().serviceDao } @@ -16,3 +18,9 @@ val CommonModules = module { single { get().stopTimeDao } single { get().tripDao } } + +internal interface PlatformDatabaseBuilder { + fun getBuilder(): RoomDatabase.Builder +} + +internal expect fun Scope.provideDatabaseBuilder(p: ParametersHolder): PlatformDatabaseBuilder diff --git a/shared/src/commonMain/kotlin/moe/lava/banksia/room/converter/RouteTypeConverter.kt b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/converter/RouteTypeConverter.kt similarity index 84% rename from shared/src/commonMain/kotlin/moe/lava/banksia/room/converter/RouteTypeConverter.kt rename to shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/converter/RouteTypeConverter.kt index 9ceb612..f9da212 100644 --- a/shared/src/commonMain/kotlin/moe/lava/banksia/room/converter/RouteTypeConverter.kt +++ b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/converter/RouteTypeConverter.kt @@ -1,4 +1,4 @@ -package moe.lava.banksia.room.converter +package moe.lava.banksia.core.room.converter import androidx.room.TypeConverter import moe.lava.banksia.model.RouteType diff --git a/shared/src/commonMain/kotlin/moe/lava/banksia/room/converter/ShapePathConverter.kt b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/converter/ShapePathConverter.kt similarity index 96% rename from shared/src/commonMain/kotlin/moe/lava/banksia/room/converter/ShapePathConverter.kt rename to shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/converter/ShapePathConverter.kt index 08a8064..5304c33 100644 --- a/shared/src/commonMain/kotlin/moe/lava/banksia/room/converter/ShapePathConverter.kt +++ b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/converter/ShapePathConverter.kt @@ -1,4 +1,4 @@ -package moe.lava.banksia.room.converter +package moe.lava.banksia.core.room.converter import androidx.room.TypeConverter import moe.lava.banksia.model.ShapePath diff --git a/shared/src/commonMain/kotlin/moe/lava/banksia/room/dao/RouteDao.kt b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/dao/RouteDao.kt similarity index 91% rename from shared/src/commonMain/kotlin/moe/lava/banksia/room/dao/RouteDao.kt rename to shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/dao/RouteDao.kt index 94ce892..c791f81 100644 --- a/shared/src/commonMain/kotlin/moe/lava/banksia/room/dao/RouteDao.kt +++ b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/dao/RouteDao.kt @@ -1,12 +1,12 @@ -package moe.lava.banksia.room.dao +package moe.lava.banksia.core.room.dao import androidx.room.Dao import androidx.room.Delete import androidx.room.Insert import androidx.room.OnConflictStrategy.Companion.REPLACE import androidx.room.Query -import moe.lava.banksia.room.entity.RouteEntity -import moe.lava.banksia.room.entity.StopEntity +import moe.lava.banksia.core.room.entity.RouteEntity +import moe.lava.banksia.core.room.entity.StopEntity @Dao interface RouteDao { diff --git a/shared/src/commonMain/kotlin/moe/lava/banksia/room/dao/ServiceDao.kt b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/dao/ServiceDao.kt similarity index 87% rename from shared/src/commonMain/kotlin/moe/lava/banksia/room/dao/ServiceDao.kt rename to shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/dao/ServiceDao.kt index 6fc2906..e459cdf 100644 --- a/shared/src/commonMain/kotlin/moe/lava/banksia/room/dao/ServiceDao.kt +++ b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/dao/ServiceDao.kt @@ -1,11 +1,11 @@ -package moe.lava.banksia.room.dao +package moe.lava.banksia.core.room.dao import androidx.room.Dao import androidx.room.Delete import androidx.room.Insert import androidx.room.OnConflictStrategy.Companion.REPLACE import androidx.room.Query -import moe.lava.banksia.room.entity.ServiceEntity +import moe.lava.banksia.core.room.entity.ServiceEntity @Dao interface ServiceDao { diff --git a/shared/src/commonMain/kotlin/moe/lava/banksia/room/dao/ServiceExceptionDao.kt b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/dao/ServiceExceptionDao.kt similarity index 88% rename from shared/src/commonMain/kotlin/moe/lava/banksia/room/dao/ServiceExceptionDao.kt rename to shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/dao/ServiceExceptionDao.kt index 123b0c6..86feb75 100644 --- a/shared/src/commonMain/kotlin/moe/lava/banksia/room/dao/ServiceExceptionDao.kt +++ b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/dao/ServiceExceptionDao.kt @@ -1,11 +1,11 @@ -package moe.lava.banksia.room.dao +package moe.lava.banksia.core.room.dao import androidx.room.Dao import androidx.room.Delete import androidx.room.Insert import androidx.room.OnConflictStrategy.Companion.REPLACE import androidx.room.Query -import moe.lava.banksia.room.entity.ServiceExceptionEntity +import moe.lava.banksia.core.room.entity.ServiceExceptionEntity @Dao interface ServiceExceptionDao { diff --git a/shared/src/commonMain/kotlin/moe/lava/banksia/room/dao/ShapeDao.kt b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/dao/ShapeDao.kt similarity index 86% rename from shared/src/commonMain/kotlin/moe/lava/banksia/room/dao/ShapeDao.kt rename to shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/dao/ShapeDao.kt index ae4d53a..446a923 100644 --- a/shared/src/commonMain/kotlin/moe/lava/banksia/room/dao/ShapeDao.kt +++ b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/dao/ShapeDao.kt @@ -1,11 +1,11 @@ -package moe.lava.banksia.room.dao +package moe.lava.banksia.core.room.dao import androidx.room.Dao import androidx.room.Delete import androidx.room.Insert import androidx.room.OnConflictStrategy.Companion.REPLACE import androidx.room.Query -import moe.lava.banksia.room.entity.ShapeEntity +import moe.lava.banksia.core.room.entity.ShapeEntity @Dao interface ShapeDao { diff --git a/shared/src/commonMain/kotlin/moe/lava/banksia/room/dao/StopDao.kt b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/dao/StopDao.kt similarity index 91% rename from shared/src/commonMain/kotlin/moe/lava/banksia/room/dao/StopDao.kt rename to shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/dao/StopDao.kt index 869ae29..99f5a2d 100644 --- a/shared/src/commonMain/kotlin/moe/lava/banksia/room/dao/StopDao.kt +++ b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/dao/StopDao.kt @@ -1,11 +1,11 @@ -package moe.lava.banksia.room.dao +package moe.lava.banksia.core.room.dao import androidx.room.Dao import androidx.room.Delete import androidx.room.Insert import androidx.room.OnConflictStrategy.Companion.REPLACE import androidx.room.Query -import moe.lava.banksia.room.entity.StopEntity +import moe.lava.banksia.core.room.entity.StopEntity @Dao interface StopDao { diff --git a/shared/src/commonMain/kotlin/moe/lava/banksia/room/dao/StopTimeDao.kt b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/dao/StopTimeDao.kt similarity index 94% rename from shared/src/commonMain/kotlin/moe/lava/banksia/room/dao/StopTimeDao.kt rename to shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/dao/StopTimeDao.kt index 82e0e4b..4670b6e 100644 --- a/shared/src/commonMain/kotlin/moe/lava/banksia/room/dao/StopTimeDao.kt +++ b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/dao/StopTimeDao.kt @@ -1,11 +1,11 @@ -package moe.lava.banksia.room.dao +package moe.lava.banksia.core.room.dao import androidx.room.Dao import androidx.room.Delete import androidx.room.Insert import androidx.room.OnConflictStrategy.Companion.REPLACE import androidx.room.Query -import moe.lava.banksia.room.entity.StopTimeEntity +import moe.lava.banksia.core.room.entity.StopTimeEntity @Dao interface StopTimeDao { diff --git a/shared/src/commonMain/kotlin/moe/lava/banksia/room/dao/TripDao.kt b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/dao/TripDao.kt similarity index 89% rename from shared/src/commonMain/kotlin/moe/lava/banksia/room/dao/TripDao.kt rename to shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/dao/TripDao.kt index 9778a1a..1798f61 100644 --- a/shared/src/commonMain/kotlin/moe/lava/banksia/room/dao/TripDao.kt +++ b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/dao/TripDao.kt @@ -1,11 +1,11 @@ -package moe.lava.banksia.room.dao +package moe.lava.banksia.core.room.dao import androidx.room.Dao import androidx.room.Delete import androidx.room.Insert import androidx.room.OnConflictStrategy.Companion.REPLACE import androidx.room.Query -import moe.lava.banksia.room.entity.TripEntity +import moe.lava.banksia.core.room.entity.TripEntity @Dao interface TripDao { diff --git a/shared/src/commonMain/kotlin/moe/lava/banksia/room/dao/VersionMetadataDao.kt b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/dao/VersionMetadataDao.kt similarity index 89% rename from shared/src/commonMain/kotlin/moe/lava/banksia/room/dao/VersionMetadataDao.kt rename to shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/dao/VersionMetadataDao.kt index b96102e..357770d 100644 --- a/shared/src/commonMain/kotlin/moe/lava/banksia/room/dao/VersionMetadataDao.kt +++ b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/dao/VersionMetadataDao.kt @@ -1,10 +1,10 @@ -package moe.lava.banksia.room.dao +package moe.lava.banksia.core.room.dao import androidx.room.Dao import androidx.room.Insert import androidx.room.OnConflictStrategy.Companion.REPLACE import androidx.room.Query -import moe.lava.banksia.room.entity.VersionMetadataEntity +import moe.lava.banksia.core.room.entity.VersionMetadataEntity @Dao interface VersionMetadataDao { diff --git a/shared/src/commonMain/kotlin/moe/lava/banksia/room/entity/RouteEntity.kt b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/entity/RouteEntity.kt similarity index 90% rename from shared/src/commonMain/kotlin/moe/lava/banksia/room/entity/RouteEntity.kt rename to shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/entity/RouteEntity.kt index cc690d6..5c5d70f 100644 --- a/shared/src/commonMain/kotlin/moe/lava/banksia/room/entity/RouteEntity.kt +++ b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/entity/RouteEntity.kt @@ -1,4 +1,4 @@ -package moe.lava.banksia.room.entity +package moe.lava.banksia.core.room.entity import androidx.room.Entity import androidx.room.PrimaryKey diff --git a/shared/src/commonMain/kotlin/moe/lava/banksia/room/entity/ServiceEntity.kt b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/entity/ServiceEntity.kt similarity index 94% rename from shared/src/commonMain/kotlin/moe/lava/banksia/room/entity/ServiceEntity.kt rename to shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/entity/ServiceEntity.kt index 027aaa8..054b016 100644 --- a/shared/src/commonMain/kotlin/moe/lava/banksia/room/entity/ServiceEntity.kt +++ b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/entity/ServiceEntity.kt @@ -1,4 +1,4 @@ -package moe.lava.banksia.room.entity +package moe.lava.banksia.core.room.entity import androidx.room.ColumnInfo import androidx.room.Entity diff --git a/shared/src/commonMain/kotlin/moe/lava/banksia/room/entity/ServiceExceptionEntity.kt b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/entity/ServiceExceptionEntity.kt similarity index 93% rename from shared/src/commonMain/kotlin/moe/lava/banksia/room/entity/ServiceExceptionEntity.kt rename to shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/entity/ServiceExceptionEntity.kt index 313246d..21bac2f 100644 --- a/shared/src/commonMain/kotlin/moe/lava/banksia/room/entity/ServiceExceptionEntity.kt +++ b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/entity/ServiceExceptionEntity.kt @@ -1,4 +1,4 @@ -package moe.lava.banksia.room.entity +package moe.lava.banksia.core.room.entity import androidx.room.ColumnInfo import androidx.room.Entity diff --git a/shared/src/commonMain/kotlin/moe/lava/banksia/room/entity/ShapeEntity.kt b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/entity/ShapeEntity.kt similarity index 79% rename from shared/src/commonMain/kotlin/moe/lava/banksia/room/entity/ShapeEntity.kt rename to shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/entity/ShapeEntity.kt index 87ca671..0010a7d 100644 --- a/shared/src/commonMain/kotlin/moe/lava/banksia/room/entity/ShapeEntity.kt +++ b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/entity/ShapeEntity.kt @@ -1,11 +1,11 @@ -package moe.lava.banksia.room.entity +package moe.lava.banksia.core.room.entity import androidx.room.Entity import androidx.room.PrimaryKey import androidx.room.TypeConverters +import moe.lava.banksia.core.room.converter.ShapePathConverter import moe.lava.banksia.model.Shape import moe.lava.banksia.model.ShapePath -import moe.lava.banksia.room.converter.ShapePathConverter @Entity("Shape") @TypeConverters(ShapePathConverter::class) diff --git a/shared/src/commonMain/kotlin/moe/lava/banksia/room/entity/StopEntity.kt b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/entity/StopEntity.kt similarity index 95% rename from shared/src/commonMain/kotlin/moe/lava/banksia/room/entity/StopEntity.kt rename to shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/entity/StopEntity.kt index 9ce7bfb..9434f11 100644 --- a/shared/src/commonMain/kotlin/moe/lava/banksia/room/entity/StopEntity.kt +++ b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/entity/StopEntity.kt @@ -1,4 +1,4 @@ -package moe.lava.banksia.room.entity +package moe.lava.banksia.core.room.entity import androidx.room.ColumnInfo import androidx.room.Entity diff --git a/shared/src/commonMain/kotlin/moe/lava/banksia/room/entity/StopTimeEntity.kt b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/entity/StopTimeEntity.kt similarity index 97% rename from shared/src/commonMain/kotlin/moe/lava/banksia/room/entity/StopTimeEntity.kt rename to shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/entity/StopTimeEntity.kt index bb20ff1..f9aac97 100644 --- a/shared/src/commonMain/kotlin/moe/lava/banksia/room/entity/StopTimeEntity.kt +++ b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/entity/StopTimeEntity.kt @@ -1,4 +1,4 @@ -package moe.lava.banksia.room.entity +package moe.lava.banksia.core.room.entity import androidx.room.Entity import androidx.room.ForeignKey diff --git a/shared/src/commonMain/kotlin/moe/lava/banksia/room/entity/TripEntity.kt b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/entity/TripEntity.kt similarity index 97% rename from shared/src/commonMain/kotlin/moe/lava/banksia/room/entity/TripEntity.kt rename to shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/entity/TripEntity.kt index 12bda02..28cce11 100644 --- a/shared/src/commonMain/kotlin/moe/lava/banksia/room/entity/TripEntity.kt +++ b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/entity/TripEntity.kt @@ -1,4 +1,4 @@ -package moe.lava.banksia.room.entity +package moe.lava.banksia.core.room.entity import androidx.room.ColumnInfo import androidx.room.Entity diff --git a/shared/src/commonMain/kotlin/moe/lava/banksia/room/entity/VersionMetadataEntity.kt b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/entity/VersionMetadataEntity.kt similarity index 91% rename from shared/src/commonMain/kotlin/moe/lava/banksia/room/entity/VersionMetadataEntity.kt rename to shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/entity/VersionMetadataEntity.kt index fc00b44..a79998c 100644 --- a/shared/src/commonMain/kotlin/moe/lava/banksia/room/entity/VersionMetadataEntity.kt +++ b/shared/room/src/commonMain/kotlin/moe/lava/banksia/core/room/entity/VersionMetadataEntity.kt @@ -1,4 +1,4 @@ -package moe.lava.banksia.room.entity +package moe.lava.banksia.core.room.entity import androidx.room.Entity import androidx.room.PrimaryKey diff --git a/shared/src/iosMain/kotlin/moe/lava/banksia/di/PlatformModule.ios.kt b/shared/room/src/iosMain/kotlin/moe/lava/banksia/core/room/RoomDiModule.ios.kt similarity index 56% rename from shared/src/iosMain/kotlin/moe/lava/banksia/di/PlatformModule.ios.kt rename to shared/room/src/iosMain/kotlin/moe/lava/banksia/core/room/RoomDiModule.ios.kt index 8597856..3c74852 100644 --- a/shared/src/iosMain/kotlin/moe/lava/banksia/di/PlatformModule.ios.kt +++ b/shared/room/src/iosMain/kotlin/moe/lava/banksia/core/room/RoomDiModule.ios.kt @@ -1,10 +1,8 @@ -package moe.lava.banksia.di +package moe.lava.banksia.core.room import androidx.room.RoomDatabase -import moe.lava.banksia.room.Database import org.koin.core.parameter.ParametersHolder import org.koin.core.scope.Scope -import org.koin.dsl.module class IosDatabaseBuilder() : PlatformDatabaseBuilder { override fun getBuilder(): RoomDatabase.Builder { @@ -12,7 +10,5 @@ class IosDatabaseBuilder() : PlatformDatabaseBuilder { } } -actual fun Scope.provideDatabaseBuilder(p: ParametersHolder): PlatformDatabaseBuilder = +internal actual fun Scope.provideDatabaseBuilder(p: ParametersHolder): PlatformDatabaseBuilder = IosDatabaseBuilder() - -internal actual val ExtPlatformModule = module { } diff --git a/shared/src/jvmMain/kotlin/moe/lava/banksia/di/PlatformModule.jvm.kt b/shared/room/src/jvmMain/kotlin/moe/lava/banksia/core/room/RoomDiModule.jvm.kt similarity index 66% rename from shared/src/jvmMain/kotlin/moe/lava/banksia/di/PlatformModule.jvm.kt rename to shared/room/src/jvmMain/kotlin/moe/lava/banksia/core/room/RoomDiModule.jvm.kt index 3e93241..38c35ce 100644 --- a/shared/src/jvmMain/kotlin/moe/lava/banksia/di/PlatformModule.jvm.kt +++ b/shared/room/src/jvmMain/kotlin/moe/lava/banksia/core/room/RoomDiModule.jvm.kt @@ -1,11 +1,9 @@ -package moe.lava.banksia.di +package moe.lava.banksia.core.room import androidx.room.Room import androidx.room.RoomDatabase -import moe.lava.banksia.room.Database import org.koin.core.parameter.ParametersHolder import org.koin.core.scope.Scope -import org.koin.dsl.module import java.io.File class JvmDatabaseBuilder() : PlatformDatabaseBuilder { @@ -17,7 +15,5 @@ class JvmDatabaseBuilder() : PlatformDatabaseBuilder { } } -actual fun Scope.provideDatabaseBuilder(p: ParametersHolder): PlatformDatabaseBuilder = +internal actual fun Scope.provideDatabaseBuilder(p: ParametersHolder): PlatformDatabaseBuilder = JvmDatabaseBuilder() - -internal actual val ExtPlatformModule = module { } diff --git a/shared/src/commonMain/kotlin/moe/lava/banksia/di/CoreDiModule.kt b/shared/src/commonMain/kotlin/moe/lava/banksia/di/CoreDiModule.kt new file mode 100644 index 0000000..332929a --- /dev/null +++ b/shared/src/commonMain/kotlin/moe/lava/banksia/di/CoreDiModule.kt @@ -0,0 +1,5 @@ +package moe.lava.banksia.di + +import org.koin.dsl.module + +val coreDiModule = module { } diff --git a/shared/src/commonMain/kotlin/moe/lava/banksia/di/PlatformModule.kt b/shared/src/commonMain/kotlin/moe/lava/banksia/di/PlatformModule.kt deleted file mode 100644 index 6f29f14..0000000 --- a/shared/src/commonMain/kotlin/moe/lava/banksia/di/PlatformModule.kt +++ /dev/null @@ -1,21 +0,0 @@ -package moe.lava.banksia.di - -import androidx.room.RoomDatabase -import moe.lava.banksia.room.Database -import org.koin.core.module.Module -import org.koin.core.parameter.ParametersHolder -import org.koin.core.scope.Scope -import org.koin.dsl.module - -interface PlatformDatabaseBuilder { - fun getBuilder(): RoomDatabase.Builder -} - -expect fun Scope.provideDatabaseBuilder(p: ParametersHolder): PlatformDatabaseBuilder - -internal expect val ExtPlatformModule: Module - -internal val PlatformModule = module { - includes(ExtPlatformModule) - single { provideDatabaseBuilder(it) } -} diff --git a/ui/build.gradle.kts b/ui/build.gradle.kts index 201a10f..b1ffe9b 100644 --- a/ui/build.gradle.kts +++ b/ui/build.gradle.kts @@ -67,8 +67,8 @@ kotlin { implementation(libs.moko.geo.compose) implementation(libs.ui.backhandler) - implementation(projects.client) implementation(projects.shared) + implementation(projects.shared.data) implementation(projects.ui.maps) implementation(projects.ui.shared) } diff --git a/ui/src/commonMain/kotlin/moe/lava/banksia/ui/App.kt b/ui/src/commonMain/kotlin/moe/lava/banksia/ui/App.kt index 453e1ee..2d71fce 100644 --- a/ui/src/commonMain/kotlin/moe/lava/banksia/ui/App.kt +++ b/ui/src/commonMain/kotlin/moe/lava/banksia/ui/App.kt @@ -3,7 +3,7 @@ package moe.lava.banksia.ui import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.runtime.Composable import androidx.compose.ui.ExperimentalComposeUiApi -import moe.lava.banksia.di.CommonModules +import moe.lava.banksia.di.coreDiModule import moe.lava.banksia.ui.di.AppModule import moe.lava.banksia.ui.screens.map.MapScreen import org.koin.compose.KoinMultiplatformApplication @@ -14,7 +14,7 @@ import org.koin.dsl.koinConfiguration @Composable fun App() { KoinMultiplatformApplication(config = koinConfiguration { - modules(CommonModules, AppModule) + modules(coreDiModule, AppModule) }) { MapScreen() } diff --git a/ui/src/commonMain/kotlin/moe/lava/banksia/ui/di/AppModule.kt b/ui/src/commonMain/kotlin/moe/lava/banksia/ui/di/AppModule.kt index 4c93644..cff36fb 100644 --- a/ui/src/commonMain/kotlin/moe/lava/banksia/ui/di/AppModule.kt +++ b/ui/src/commonMain/kotlin/moe/lava/banksia/ui/di/AppModule.kt @@ -1,12 +1,13 @@ package moe.lava.banksia.ui.di -import moe.lava.banksia.client.di.ClientModule +import moe.lava.banksia.core.data.dataDiModule import moe.lava.banksia.ui.screens.map.MapScreenViewModel import org.koin.core.module.dsl.viewModelOf import org.koin.dsl.module val AppModule = module { - includes(ClientModule) + includes(dataDiModule) + // ViewModel viewModelOf(::MapScreenViewModel) } diff --git a/ui/src/commonMain/kotlin/moe/lava/banksia/ui/screens/map/MapScreenViewModel.kt b/ui/src/commonMain/kotlin/moe/lava/banksia/ui/screens/map/MapScreenViewModel.kt index 2e19c68..bb45232 100644 --- a/ui/src/commonMain/kotlin/moe/lava/banksia/ui/screens/map/MapScreenViewModel.kt +++ b/ui/src/commonMain/kotlin/moe/lava/banksia/ui/screens/map/MapScreenViewModel.kt @@ -15,9 +15,9 @@ import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import kotlinx.datetime.TimeZone import kotlinx.datetime.toInstant -import moe.lava.banksia.client.repository.RouteRepository -import moe.lava.banksia.client.repository.StopRepository -import moe.lava.banksia.client.repository.StopTimeRepository +import moe.lava.banksia.core.data.repositories.RouteRepository +import moe.lava.banksia.core.data.repositories.StopRepository +import moe.lava.banksia.core.data.repositories.StopTimeRepository import moe.lava.banksia.data.ptv.PtvService import moe.lava.banksia.model.Route import moe.lava.banksia.model.RouteType