refactor: split up room into a module, and move client module
This commit is contained in:
parent
c55e3a3232
commit
104a77b27e
60 changed files with 220 additions and 170 deletions
|
|
@ -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())
|
|
||||||
}
|
|
||||||
|
|
@ -39,4 +39,6 @@ dependencies {
|
||||||
implementation(libs.sqlite.bundled)
|
implementation(libs.sqlite.bundled)
|
||||||
testImplementation(libs.ktor.server.tests)
|
testImplementation(libs.ktor.server.tests)
|
||||||
testImplementation(libs.kotlin.test.junit)
|
testImplementation(libs.kotlin.test.junit)
|
||||||
|
|
||||||
|
implementation(projects.shared.room)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,12 +19,11 @@ import kotlinx.datetime.LocalDate
|
||||||
import kotlinx.datetime.TimeZone
|
import kotlinx.datetime.TimeZone
|
||||||
import kotlinx.datetime.todayIn
|
import kotlinx.datetime.todayIn
|
||||||
import moe.lava.banksia.Constants
|
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.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.di.ServerModules
|
||||||
import moe.lava.banksia.server.gtfsrt.GtfsrtService
|
import moe.lava.banksia.server.gtfsrt.GtfsrtService
|
||||||
import moe.lava.banksia.util.serialise
|
import moe.lava.banksia.util.serialise
|
||||||
|
|
@ -44,14 +43,12 @@ fun Application.module() {
|
||||||
}
|
}
|
||||||
install(Koin) {
|
install(Koin) {
|
||||||
modules(module { single { log } })
|
modules(module { single { log } })
|
||||||
modules(CommonModules, ServerModules)
|
modules(ServerModules)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("KotlinConstantConditions")
|
|
||||||
if (!Constants.devMode) {
|
|
||||||
val gtfsr by inject<GtfsrtService>()
|
val gtfsr by inject<GtfsrtService>()
|
||||||
launch { gtfsr.start(this, true) }
|
@Suppress("KotlinConstantConditions")
|
||||||
}
|
launch { gtfsr.start(this, !Constants.devMode) }
|
||||||
|
|
||||||
routing {
|
routing {
|
||||||
if (Constants.devMode) {
|
if (Constants.devMode) {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package moe.lava.banksia.server
|
package moe.lava.banksia.server
|
||||||
|
|
||||||
import moe.lava.banksia.room.Database
|
import moe.lava.banksia.core.room.Database
|
||||||
import moe.lava.banksia.room.entity.StopEntity
|
import moe.lava.banksia.core.room.entity.StopEntity
|
||||||
import moe.lava.banksia.util.log
|
import moe.lava.banksia.util.log
|
||||||
import java.security.MessageDigest
|
import java.security.MessageDigest
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,8 @@ package moe.lava.banksia.server
|
||||||
import androidx.room.immediateTransaction
|
import androidx.room.immediateTransaction
|
||||||
import androidx.room.useWriterConnection
|
import androidx.room.useWriterConnection
|
||||||
import io.ktor.util.logging.Logger
|
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.Route
|
||||||
import moe.lava.banksia.model.Service
|
import moe.lava.banksia.model.Service
|
||||||
import moe.lava.banksia.model.ServiceException
|
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.Stop
|
||||||
import moe.lava.banksia.model.StopTime
|
import moe.lava.banksia.model.StopTime
|
||||||
import moe.lava.banksia.model.Trip
|
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.GtfsData
|
||||||
import moe.lava.banksia.server.gtfs.GtfsParser
|
import moe.lava.banksia.server.gtfs.GtfsParser
|
||||||
import kotlin.time.Clock
|
import kotlin.time.Clock
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package moe.lava.banksia.server.di
|
package moe.lava.banksia.server.di
|
||||||
|
|
||||||
import io.ktor.client.HttpClient
|
import io.ktor.client.HttpClient
|
||||||
|
import moe.lava.banksia.core.room.roomDiModule
|
||||||
import moe.lava.banksia.server.GtfsDataFixer
|
import moe.lava.banksia.server.GtfsDataFixer
|
||||||
import moe.lava.banksia.server.GtfsImporter
|
import moe.lava.banksia.server.GtfsImporter
|
||||||
import moe.lava.banksia.server.gtfs.GtfsParser
|
import moe.lava.banksia.server.gtfs.GtfsParser
|
||||||
|
|
@ -9,6 +10,8 @@ import org.koin.core.module.dsl.singleOf
|
||||||
import org.koin.dsl.module
|
import org.koin.dsl.module
|
||||||
|
|
||||||
val ServerModules = module {
|
val ServerModules = module {
|
||||||
|
includes(roomDiModule)
|
||||||
|
|
||||||
single { HttpClient() }
|
single { HttpClient() }
|
||||||
singleOf(::GtfsParser)
|
singleOf(::GtfsParser)
|
||||||
singleOf(::GtfsrtService)
|
singleOf(::GtfsrtService)
|
||||||
|
|
|
||||||
|
|
@ -32,11 +32,12 @@ dependencyResolutionManagement {
|
||||||
}
|
}
|
||||||
|
|
||||||
include(":androidApp")
|
include(":androidApp")
|
||||||
include(":client")
|
|
||||||
include(":server")
|
include(":server")
|
||||||
include(":server:gtfs")
|
include(":server:gtfs")
|
||||||
include(":server:gtfs_rt")
|
include(":server:gtfs_rt")
|
||||||
include(":shared")
|
include(":shared")
|
||||||
|
include(":shared:data")
|
||||||
|
include(":shared:room")
|
||||||
include(":ui")
|
include(":ui")
|
||||||
include(":ui:maps")
|
include(":ui:maps")
|
||||||
include(":ui:shared")
|
include(":ui:shared")
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,12 @@ plugins {
|
||||||
alias(libs.plugins.kotlinMultiplatform)
|
alias(libs.plugins.kotlinMultiplatform)
|
||||||
alias(libs.plugins.kotlinSerialization)
|
alias(libs.plugins.kotlinSerialization)
|
||||||
alias(libs.plugins.androidMultiplatformLibrary)
|
alias(libs.plugins.androidMultiplatformLibrary)
|
||||||
|
alias(libs.plugins.ksp)
|
||||||
}
|
}
|
||||||
|
|
||||||
kotlin {
|
kotlin {
|
||||||
android {
|
android {
|
||||||
namespace = "moe.lava.banksia.client"
|
namespace = "moe.lava.banksia.core.data"
|
||||||
compileSdk = libs.versions.android.compileSdk.get().toInt()
|
compileSdk = libs.versions.android.compileSdk.get().toInt()
|
||||||
|
|
||||||
compilerOptions {
|
compilerOptions {
|
||||||
|
|
@ -23,21 +24,29 @@ kotlin {
|
||||||
iosArm64()
|
iosArm64()
|
||||||
iosSimulatorArm64()
|
iosSimulatorArm64()
|
||||||
|
|
||||||
|
jvm()
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
androidMain.dependencies {
|
androidMain.dependencies {
|
||||||
implementation(libs.compose.ui.tooling.preview)
|
implementation(libs.koin.compose)
|
||||||
implementation(libs.androidx.activity.compose)
|
implementation(libs.ktor.client.okhttp)
|
||||||
implementation(libs.kotlinx.coroutines.android)
|
|
||||||
implementation(libs.play.services.location)
|
|
||||||
}
|
}
|
||||||
commonMain.dependencies {
|
commonMain.dependencies {
|
||||||
|
implementation(libs.okio)
|
||||||
implementation(libs.koin.core)
|
implementation(libs.koin.core)
|
||||||
implementation(libs.kotlinx.coroutines.core)
|
|
||||||
implementation(libs.kotlinx.datetime)
|
|
||||||
implementation(libs.ktor.client.core)
|
implementation(libs.ktor.client.core)
|
||||||
implementation(libs.ktor.client.contentnegotiation)
|
implementation(libs.ktor.client.contentnegotiation)
|
||||||
implementation(libs.ktor.serialization.kotlinx.json)
|
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)
|
||||||
|
implementation(projects.shared.room)
|
||||||
|
}
|
||||||
|
iosMain.dependencies {
|
||||||
|
implementation(libs.ktor.client.darwin)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -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.HttpClient
|
||||||
import io.ktor.client.plugins.HttpSend
|
import io.ktor.client.plugins.HttpSend
|
||||||
|
|
@ -8,21 +8,24 @@ import io.ktor.client.plugins.plugin
|
||||||
import io.ktor.serialization.kotlinx.json.json
|
import io.ktor.serialization.kotlinx.json.json
|
||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
import moe.lava.banksia.Constants
|
import moe.lava.banksia.Constants
|
||||||
import moe.lava.banksia.client.data.route.RouteLocalDataSource
|
import moe.lava.banksia.core.data.repositories.RouteRepository
|
||||||
import moe.lava.banksia.client.data.route.RouteRemoteDataSource
|
import moe.lava.banksia.core.data.repositories.StopRepository
|
||||||
import moe.lava.banksia.client.data.stop.StopLocalDataSource
|
import moe.lava.banksia.core.data.repositories.StopTimeRepository
|
||||||
import moe.lava.banksia.client.data.stop.StopRemoteDataSource
|
import moe.lava.banksia.core.data.sources.route.RouteLocalDataSource
|
||||||
import moe.lava.banksia.client.data.stoptime.StopTimeLocalDataSource
|
import moe.lava.banksia.core.data.sources.route.RouteRemoteDataSource
|
||||||
import moe.lava.banksia.client.data.stoptime.StopTimeRemoteDataSource
|
import moe.lava.banksia.core.data.sources.stop.StopLocalDataSource
|
||||||
import moe.lava.banksia.client.repository.RouteRepository
|
import moe.lava.banksia.core.data.sources.stop.StopRemoteDataSource
|
||||||
import moe.lava.banksia.client.repository.StopRepository
|
import moe.lava.banksia.core.data.sources.stoptime.StopTimeLocalDataSource
|
||||||
import moe.lava.banksia.client.repository.StopTimeRepository
|
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.data.ptv.PtvService
|
||||||
import moe.lava.banksia.util.log
|
import moe.lava.banksia.util.log
|
||||||
import org.koin.core.module.dsl.singleOf
|
import org.koin.core.module.dsl.singleOf
|
||||||
import org.koin.dsl.module
|
import org.koin.dsl.module
|
||||||
|
|
||||||
val ClientModule = module {
|
val dataDiModule = module {
|
||||||
|
includes(roomDiModule)
|
||||||
|
|
||||||
// HTTP Clients
|
// HTTP Clients
|
||||||
singleOf(::PtvService)
|
singleOf(::PtvService)
|
||||||
single {
|
single {
|
||||||
|
|
@ -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.Mutex
|
||||||
import kotlinx.coroutines.sync.withLock
|
import kotlinx.coroutines.sync.withLock
|
||||||
import moe.lava.banksia.client.data.route.RouteLocalDataSource
|
import moe.lava.banksia.core.data.sources.route.RouteLocalDataSource
|
||||||
import moe.lava.banksia.client.data.route.RouteRemoteDataSource
|
import moe.lava.banksia.core.data.sources.route.RouteRemoteDataSource
|
||||||
|
|
||||||
class RouteRepository(
|
class RouteRepository internal constructor(
|
||||||
private val local: RouteLocalDataSource,
|
private val local: RouteLocalDataSource,
|
||||||
private val remote: RouteRemoteDataSource,
|
private val remote: RouteRemoteDataSource,
|
||||||
) {
|
) {
|
||||||
|
|
@ -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.Mutex
|
||||||
import kotlinx.coroutines.sync.withLock
|
import kotlinx.coroutines.sync.withLock
|
||||||
import moe.lava.banksia.client.data.stop.StopLocalDataSource
|
import moe.lava.banksia.core.data.sources.stop.StopLocalDataSource
|
||||||
import moe.lava.banksia.client.data.stop.StopRemoteDataSource
|
import moe.lava.banksia.core.data.sources.stop.StopRemoteDataSource
|
||||||
|
|
||||||
class StopRepository(
|
class StopRepository internal constructor(
|
||||||
private val local: StopLocalDataSource,
|
private val local: StopLocalDataSource,
|
||||||
private val remote: StopRemoteDataSource,
|
private val remote: StopRemoteDataSource,
|
||||||
) {
|
) {
|
||||||
|
|
@ -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.core.data.sources.stoptime.StopTimeLocalDataSource
|
||||||
import moe.lava.banksia.client.data.stoptime.StopTimeRemoteDataSource
|
import moe.lava.banksia.core.data.sources.stoptime.StopTimeRemoteDataSource
|
||||||
import moe.lava.banksia.model.StopTimeDated
|
import moe.lava.banksia.model.StopTimeDated
|
||||||
|
|
||||||
class StopTimeRepository(
|
class StopTimeRepository internal constructor(
|
||||||
private val local: StopTimeLocalDataSource,
|
private val local: StopTimeLocalDataSource,
|
||||||
private val remote: StopTimeRemoteDataSource,
|
private val remote: StopTimeRemoteDataSource,
|
||||||
) {
|
) {
|
||||||
|
|
@ -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.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 get(id: String) = dao.get(id)
|
||||||
suspend fun getAll() = dao.getAll()
|
suspend fun getAll() = dao.getAll()
|
||||||
suspend fun save(vararg routes: Route) = dao.insertOrReplaceAll(*routes.map { it.asEntity() }.toTypedArray())
|
suspend fun save(vararg routes: Route) = dao.insertOrReplaceAll(*routes.map { it.asEntity() }.toTypedArray())
|
||||||
|
|
@ -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.HttpClient
|
||||||
import io.ktor.client.call.body
|
import io.ktor.client.call.body
|
||||||
import io.ktor.client.request.get
|
import io.ktor.client.request.get
|
||||||
import moe.lava.banksia.model.Route
|
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<Route>()
|
suspend fun get(id: String) = client.get("routes/${id}").body<Route>()
|
||||||
suspend fun getAll() = client.get("routes").body<List<Route>>()
|
suspend fun getAll() = client.get("routes").body<List<Route>>()
|
||||||
}
|
}
|
||||||
|
|
@ -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())
|
||||||
|
}
|
||||||
|
|
@ -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.HttpClient
|
||||||
import io.ktor.client.call.body
|
import io.ktor.client.call.body
|
||||||
import io.ktor.client.request.get
|
import io.ktor.client.request.get
|
||||||
import moe.lava.banksia.model.Stop
|
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<Stop>()
|
suspend fun get(id: String) = client.get("stops/${id}").body<Stop>()
|
||||||
suspend fun getByRoute(id: String) = client.get("route_stops/${id}").body<List<Stop>>()
|
suspend fun getByRoute(id: String) = client.get("route_stops/${id}").body<List<Stop>>()
|
||||||
}
|
}
|
||||||
|
|
@ -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.LocalDate
|
||||||
import kotlinx.datetime.TimeZone
|
import kotlinx.datetime.TimeZone
|
||||||
import kotlinx.datetime.todayIn
|
import kotlinx.datetime.todayIn
|
||||||
|
import moe.lava.banksia.core.room.dao.StopTimeDao
|
||||||
import moe.lava.banksia.model.StopTimeDated
|
import moe.lava.banksia.model.StopTimeDated
|
||||||
import moe.lava.banksia.model.atDate
|
import moe.lava.banksia.model.atDate
|
||||||
import moe.lava.banksia.room.dao.StopTimeDao
|
|
||||||
import moe.lava.banksia.util.serialise
|
import moe.lava.banksia.util.serialise
|
||||||
import kotlin.time.Clock
|
import kotlin.time.Clock
|
||||||
|
|
||||||
class StopTimeLocalDataSource(
|
internal class StopTimeLocalDataSource(
|
||||||
private val stopTimeDao: StopTimeDao,
|
private val stopTimeDao: StopTimeDao,
|
||||||
) {
|
) {
|
||||||
suspend fun getAtStop(
|
suspend fun getAtStop(
|
||||||
|
|
@ -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.HttpClient
|
||||||
import io.ktor.client.call.body
|
import io.ktor.client.call.body
|
||||||
|
|
@ -10,7 +10,7 @@ import kotlinx.datetime.todayIn
|
||||||
import moe.lava.banksia.model.StopTimeDated
|
import moe.lava.banksia.model.StopTimeDated
|
||||||
import kotlin.time.Clock
|
import kotlin.time.Clock
|
||||||
|
|
||||||
class StopTimeRemoteDataSource(
|
internal class StopTimeRemoteDataSource(
|
||||||
private val client: HttpClient,
|
private val client: HttpClient,
|
||||||
) {
|
) {
|
||||||
suspend fun getAtStop(
|
suspend fun getAtStop(
|
||||||
|
|
@ -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 io.ktor.client.HttpClient
|
||||||
import kotlinx.datetime.DayOfWeek
|
import kotlinx.datetime.DayOfWeek
|
||||||
|
|
@ -7,7 +7,7 @@ import kotlinx.datetime.todayIn
|
||||||
import moe.lava.banksia.model.Trip
|
import moe.lava.banksia.model.Trip
|
||||||
import kotlin.time.Clock
|
import kotlin.time.Clock
|
||||||
|
|
||||||
class TripRemoteDataSource(
|
internal class TripRemoteDataSource(
|
||||||
private val client: HttpClient,
|
private val client: HttpClient,
|
||||||
) {
|
) {
|
||||||
suspend fun get(
|
suspend fun get(
|
||||||
54
shared/room/build.gradle.kts
Normal file
54
shared/room/build.gradle.kts
Normal file
|
|
@ -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)
|
||||||
|
}
|
||||||
|
|
@ -1,12 +1,10 @@
|
||||||
package moe.lava.banksia.di
|
package moe.lava.banksia.core.room
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.room.Room
|
import androidx.room.Room
|
||||||
import androidx.room.RoomDatabase
|
import androidx.room.RoomDatabase
|
||||||
import moe.lava.banksia.room.Database
|
|
||||||
import org.koin.core.parameter.ParametersHolder
|
import org.koin.core.parameter.ParametersHolder
|
||||||
import org.koin.core.scope.Scope
|
import org.koin.core.scope.Scope
|
||||||
import org.koin.dsl.module
|
|
||||||
|
|
||||||
class AndroidDatabaseBuilder(val ctx: Context) : PlatformDatabaseBuilder {
|
class AndroidDatabaseBuilder(val ctx: Context) : PlatformDatabaseBuilder {
|
||||||
override fun getBuilder(): RoomDatabase.Builder<Database> {
|
override fun getBuilder(): RoomDatabase.Builder<Database> {
|
||||||
|
|
@ -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())
|
AndroidDatabaseBuilder(get())
|
||||||
|
|
||||||
internal actual val ExtPlatformModule = module { }
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package moe.lava.banksia.room
|
package moe.lava.banksia.core.room
|
||||||
|
|
||||||
import androidx.room.AutoMigration
|
import androidx.room.AutoMigration
|
||||||
import androidx.room.RoomDatabase
|
import androidx.room.RoomDatabase
|
||||||
|
|
@ -10,23 +10,23 @@ import androidx.sqlite.driver.bundled.BundledSQLiteDriver
|
||||||
import androidx.sqlite.execSQL
|
import androidx.sqlite.execSQL
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.IO
|
import kotlinx.coroutines.IO
|
||||||
import moe.lava.banksia.room.converter.RouteTypeConverter
|
import moe.lava.banksia.core.room.converter.RouteTypeConverter
|
||||||
import moe.lava.banksia.room.dao.RouteDao
|
import moe.lava.banksia.core.room.dao.RouteDao
|
||||||
import moe.lava.banksia.room.dao.ServiceDao
|
import moe.lava.banksia.core.room.dao.ServiceDao
|
||||||
import moe.lava.banksia.room.dao.ServiceExceptionDao
|
import moe.lava.banksia.core.room.dao.ServiceExceptionDao
|
||||||
import moe.lava.banksia.room.dao.ShapeDao
|
import moe.lava.banksia.core.room.dao.ShapeDao
|
||||||
import moe.lava.banksia.room.dao.StopDao
|
import moe.lava.banksia.core.room.dao.StopDao
|
||||||
import moe.lava.banksia.room.dao.StopTimeDao
|
import moe.lava.banksia.core.room.dao.StopTimeDao
|
||||||
import moe.lava.banksia.room.dao.TripDao
|
import moe.lava.banksia.core.room.dao.TripDao
|
||||||
import moe.lava.banksia.room.dao.VersionMetadataDao
|
import moe.lava.banksia.core.room.dao.VersionMetadataDao
|
||||||
import moe.lava.banksia.room.entity.RouteEntity
|
import moe.lava.banksia.core.room.entity.RouteEntity
|
||||||
import moe.lava.banksia.room.entity.ServiceEntity
|
import moe.lava.banksia.core.room.entity.ServiceEntity
|
||||||
import moe.lava.banksia.room.entity.ServiceExceptionEntity
|
import moe.lava.banksia.core.room.entity.ServiceExceptionEntity
|
||||||
import moe.lava.banksia.room.entity.ShapeEntity
|
import moe.lava.banksia.core.room.entity.ShapeEntity
|
||||||
import moe.lava.banksia.room.entity.StopEntity
|
import moe.lava.banksia.core.room.entity.StopEntity
|
||||||
import moe.lava.banksia.room.entity.StopTimeEntity
|
import moe.lava.banksia.core.room.entity.StopTimeEntity
|
||||||
import moe.lava.banksia.room.entity.TripEntity
|
import moe.lava.banksia.core.room.entity.TripEntity
|
||||||
import moe.lava.banksia.room.entity.VersionMetadataEntity
|
import moe.lava.banksia.core.room.entity.VersionMetadataEntity
|
||||||
import androidx.room.Database as DatabaseAnnotation
|
import androidx.room.Database as DatabaseAnnotation
|
||||||
|
|
||||||
@DatabaseAnnotation(
|
@DatabaseAnnotation(
|
||||||
|
|
@ -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
|
import org.koin.dsl.module
|
||||||
|
|
||||||
val CommonModules = module {
|
val roomDiModule = module {
|
||||||
includes(PlatformModule)
|
single { provideDatabaseBuilder(it) }
|
||||||
|
|
||||||
single { Database.build(get<PlatformDatabaseBuilder>().getBuilder()) }
|
single { Database.build(get<PlatformDatabaseBuilder>().getBuilder()) }
|
||||||
|
|
||||||
single { get<Database>().versionMetadataDao }
|
single { get<Database>().versionMetadataDao }
|
||||||
single { get<Database>().routeDao }
|
single { get<Database>().routeDao }
|
||||||
single { get<Database>().serviceDao }
|
single { get<Database>().serviceDao }
|
||||||
|
|
@ -16,3 +18,9 @@ val CommonModules = module {
|
||||||
single { get<Database>().stopTimeDao }
|
single { get<Database>().stopTimeDao }
|
||||||
single { get<Database>().tripDao }
|
single { get<Database>().tripDao }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal interface PlatformDatabaseBuilder {
|
||||||
|
fun getBuilder(): RoomDatabase.Builder<Database>
|
||||||
|
}
|
||||||
|
|
||||||
|
internal expect fun Scope.provideDatabaseBuilder(p: ParametersHolder): PlatformDatabaseBuilder
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package moe.lava.banksia.room.converter
|
package moe.lava.banksia.core.room.converter
|
||||||
|
|
||||||
import androidx.room.TypeConverter
|
import androidx.room.TypeConverter
|
||||||
import moe.lava.banksia.model.RouteType
|
import moe.lava.banksia.model.RouteType
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package moe.lava.banksia.room.converter
|
package moe.lava.banksia.core.room.converter
|
||||||
|
|
||||||
import androidx.room.TypeConverter
|
import androidx.room.TypeConverter
|
||||||
import moe.lava.banksia.model.ShapePath
|
import moe.lava.banksia.model.ShapePath
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
package moe.lava.banksia.room.dao
|
package moe.lava.banksia.core.room.dao
|
||||||
|
|
||||||
import androidx.room.Dao
|
import androidx.room.Dao
|
||||||
import androidx.room.Delete
|
import androidx.room.Delete
|
||||||
import androidx.room.Insert
|
import androidx.room.Insert
|
||||||
import androidx.room.OnConflictStrategy.Companion.REPLACE
|
import androidx.room.OnConflictStrategy.Companion.REPLACE
|
||||||
import androidx.room.Query
|
import androidx.room.Query
|
||||||
import moe.lava.banksia.room.entity.RouteEntity
|
import moe.lava.banksia.core.room.entity.RouteEntity
|
||||||
import moe.lava.banksia.room.entity.StopEntity
|
import moe.lava.banksia.core.room.entity.StopEntity
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
interface RouteDao {
|
interface RouteDao {
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
package moe.lava.banksia.room.dao
|
package moe.lava.banksia.core.room.dao
|
||||||
|
|
||||||
import androidx.room.Dao
|
import androidx.room.Dao
|
||||||
import androidx.room.Delete
|
import androidx.room.Delete
|
||||||
import androidx.room.Insert
|
import androidx.room.Insert
|
||||||
import androidx.room.OnConflictStrategy.Companion.REPLACE
|
import androidx.room.OnConflictStrategy.Companion.REPLACE
|
||||||
import androidx.room.Query
|
import androidx.room.Query
|
||||||
import moe.lava.banksia.room.entity.ServiceEntity
|
import moe.lava.banksia.core.room.entity.ServiceEntity
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
interface ServiceDao {
|
interface ServiceDao {
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
package moe.lava.banksia.room.dao
|
package moe.lava.banksia.core.room.dao
|
||||||
|
|
||||||
import androidx.room.Dao
|
import androidx.room.Dao
|
||||||
import androidx.room.Delete
|
import androidx.room.Delete
|
||||||
import androidx.room.Insert
|
import androidx.room.Insert
|
||||||
import androidx.room.OnConflictStrategy.Companion.REPLACE
|
import androidx.room.OnConflictStrategy.Companion.REPLACE
|
||||||
import androidx.room.Query
|
import androidx.room.Query
|
||||||
import moe.lava.banksia.room.entity.ServiceExceptionEntity
|
import moe.lava.banksia.core.room.entity.ServiceExceptionEntity
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
interface ServiceExceptionDao {
|
interface ServiceExceptionDao {
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
package moe.lava.banksia.room.dao
|
package moe.lava.banksia.core.room.dao
|
||||||
|
|
||||||
import androidx.room.Dao
|
import androidx.room.Dao
|
||||||
import androidx.room.Delete
|
import androidx.room.Delete
|
||||||
import androidx.room.Insert
|
import androidx.room.Insert
|
||||||
import androidx.room.OnConflictStrategy.Companion.REPLACE
|
import androidx.room.OnConflictStrategy.Companion.REPLACE
|
||||||
import androidx.room.Query
|
import androidx.room.Query
|
||||||
import moe.lava.banksia.room.entity.ShapeEntity
|
import moe.lava.banksia.core.room.entity.ShapeEntity
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
interface ShapeDao {
|
interface ShapeDao {
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
package moe.lava.banksia.room.dao
|
package moe.lava.banksia.core.room.dao
|
||||||
|
|
||||||
import androidx.room.Dao
|
import androidx.room.Dao
|
||||||
import androidx.room.Delete
|
import androidx.room.Delete
|
||||||
import androidx.room.Insert
|
import androidx.room.Insert
|
||||||
import androidx.room.OnConflictStrategy.Companion.REPLACE
|
import androidx.room.OnConflictStrategy.Companion.REPLACE
|
||||||
import androidx.room.Query
|
import androidx.room.Query
|
||||||
import moe.lava.banksia.room.entity.StopEntity
|
import moe.lava.banksia.core.room.entity.StopEntity
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
interface StopDao {
|
interface StopDao {
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
package moe.lava.banksia.room.dao
|
package moe.lava.banksia.core.room.dao
|
||||||
|
|
||||||
import androidx.room.Dao
|
import androidx.room.Dao
|
||||||
import androidx.room.Delete
|
import androidx.room.Delete
|
||||||
import androidx.room.Insert
|
import androidx.room.Insert
|
||||||
import androidx.room.OnConflictStrategy.Companion.REPLACE
|
import androidx.room.OnConflictStrategy.Companion.REPLACE
|
||||||
import androidx.room.Query
|
import androidx.room.Query
|
||||||
import moe.lava.banksia.room.entity.StopTimeEntity
|
import moe.lava.banksia.core.room.entity.StopTimeEntity
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
interface StopTimeDao {
|
interface StopTimeDao {
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
package moe.lava.banksia.room.dao
|
package moe.lava.banksia.core.room.dao
|
||||||
|
|
||||||
import androidx.room.Dao
|
import androidx.room.Dao
|
||||||
import androidx.room.Delete
|
import androidx.room.Delete
|
||||||
import androidx.room.Insert
|
import androidx.room.Insert
|
||||||
import androidx.room.OnConflictStrategy.Companion.REPLACE
|
import androidx.room.OnConflictStrategy.Companion.REPLACE
|
||||||
import androidx.room.Query
|
import androidx.room.Query
|
||||||
import moe.lava.banksia.room.entity.TripEntity
|
import moe.lava.banksia.core.room.entity.TripEntity
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
interface TripDao {
|
interface TripDao {
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
package moe.lava.banksia.room.dao
|
package moe.lava.banksia.core.room.dao
|
||||||
|
|
||||||
import androidx.room.Dao
|
import androidx.room.Dao
|
||||||
import androidx.room.Insert
|
import androidx.room.Insert
|
||||||
import androidx.room.OnConflictStrategy.Companion.REPLACE
|
import androidx.room.OnConflictStrategy.Companion.REPLACE
|
||||||
import androidx.room.Query
|
import androidx.room.Query
|
||||||
import moe.lava.banksia.room.entity.VersionMetadataEntity
|
import moe.lava.banksia.core.room.entity.VersionMetadataEntity
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
interface VersionMetadataDao {
|
interface VersionMetadataDao {
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package moe.lava.banksia.room.entity
|
package moe.lava.banksia.core.room.entity
|
||||||
|
|
||||||
import androidx.room.Entity
|
import androidx.room.Entity
|
||||||
import androidx.room.PrimaryKey
|
import androidx.room.PrimaryKey
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package moe.lava.banksia.room.entity
|
package moe.lava.banksia.core.room.entity
|
||||||
|
|
||||||
import androidx.room.ColumnInfo
|
import androidx.room.ColumnInfo
|
||||||
import androidx.room.Entity
|
import androidx.room.Entity
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package moe.lava.banksia.room.entity
|
package moe.lava.banksia.core.room.entity
|
||||||
|
|
||||||
import androidx.room.ColumnInfo
|
import androidx.room.ColumnInfo
|
||||||
import androidx.room.Entity
|
import androidx.room.Entity
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
package moe.lava.banksia.room.entity
|
package moe.lava.banksia.core.room.entity
|
||||||
|
|
||||||
import androidx.room.Entity
|
import androidx.room.Entity
|
||||||
import androidx.room.PrimaryKey
|
import androidx.room.PrimaryKey
|
||||||
import androidx.room.TypeConverters
|
import androidx.room.TypeConverters
|
||||||
|
import moe.lava.banksia.core.room.converter.ShapePathConverter
|
||||||
import moe.lava.banksia.model.Shape
|
import moe.lava.banksia.model.Shape
|
||||||
import moe.lava.banksia.model.ShapePath
|
import moe.lava.banksia.model.ShapePath
|
||||||
import moe.lava.banksia.room.converter.ShapePathConverter
|
|
||||||
|
|
||||||
@Entity("Shape")
|
@Entity("Shape")
|
||||||
@TypeConverters(ShapePathConverter::class)
|
@TypeConverters(ShapePathConverter::class)
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package moe.lava.banksia.room.entity
|
package moe.lava.banksia.core.room.entity
|
||||||
|
|
||||||
import androidx.room.ColumnInfo
|
import androidx.room.ColumnInfo
|
||||||
import androidx.room.Entity
|
import androidx.room.Entity
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package moe.lava.banksia.room.entity
|
package moe.lava.banksia.core.room.entity
|
||||||
|
|
||||||
import androidx.room.Entity
|
import androidx.room.Entity
|
||||||
import androidx.room.ForeignKey
|
import androidx.room.ForeignKey
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package moe.lava.banksia.room.entity
|
package moe.lava.banksia.core.room.entity
|
||||||
|
|
||||||
import androidx.room.ColumnInfo
|
import androidx.room.ColumnInfo
|
||||||
import androidx.room.Entity
|
import androidx.room.Entity
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package moe.lava.banksia.room.entity
|
package moe.lava.banksia.core.room.entity
|
||||||
|
|
||||||
import androidx.room.Entity
|
import androidx.room.Entity
|
||||||
import androidx.room.PrimaryKey
|
import androidx.room.PrimaryKey
|
||||||
|
|
@ -1,10 +1,8 @@
|
||||||
package moe.lava.banksia.di
|
package moe.lava.banksia.core.room
|
||||||
|
|
||||||
import androidx.room.RoomDatabase
|
import androidx.room.RoomDatabase
|
||||||
import moe.lava.banksia.room.Database
|
|
||||||
import org.koin.core.parameter.ParametersHolder
|
import org.koin.core.parameter.ParametersHolder
|
||||||
import org.koin.core.scope.Scope
|
import org.koin.core.scope.Scope
|
||||||
import org.koin.dsl.module
|
|
||||||
|
|
||||||
class IosDatabaseBuilder() : PlatformDatabaseBuilder {
|
class IosDatabaseBuilder() : PlatformDatabaseBuilder {
|
||||||
override fun getBuilder(): RoomDatabase.Builder<Database> {
|
override fun getBuilder(): RoomDatabase.Builder<Database> {
|
||||||
|
|
@ -12,7 +10,5 @@ class IosDatabaseBuilder() : PlatformDatabaseBuilder {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
actual fun Scope.provideDatabaseBuilder(p: ParametersHolder): PlatformDatabaseBuilder =
|
internal actual fun Scope.provideDatabaseBuilder(p: ParametersHolder): PlatformDatabaseBuilder =
|
||||||
IosDatabaseBuilder()
|
IosDatabaseBuilder()
|
||||||
|
|
||||||
internal actual val ExtPlatformModule = module { }
|
|
||||||
|
|
@ -1,11 +1,9 @@
|
||||||
package moe.lava.banksia.di
|
package moe.lava.banksia.core.room
|
||||||
|
|
||||||
import androidx.room.Room
|
import androidx.room.Room
|
||||||
import androidx.room.RoomDatabase
|
import androidx.room.RoomDatabase
|
||||||
import moe.lava.banksia.room.Database
|
|
||||||
import org.koin.core.parameter.ParametersHolder
|
import org.koin.core.parameter.ParametersHolder
|
||||||
import org.koin.core.scope.Scope
|
import org.koin.core.scope.Scope
|
||||||
import org.koin.dsl.module
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
class JvmDatabaseBuilder() : PlatformDatabaseBuilder {
|
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()
|
JvmDatabaseBuilder()
|
||||||
|
|
||||||
internal actual val ExtPlatformModule = module { }
|
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
package moe.lava.banksia.di
|
||||||
|
|
||||||
|
import org.koin.dsl.module
|
||||||
|
|
||||||
|
val coreDiModule = module { }
|
||||||
|
|
@ -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<Database>
|
|
||||||
}
|
|
||||||
|
|
||||||
expect fun Scope.provideDatabaseBuilder(p: ParametersHolder): PlatformDatabaseBuilder
|
|
||||||
|
|
||||||
internal expect val ExtPlatformModule: Module
|
|
||||||
|
|
||||||
internal val PlatformModule = module {
|
|
||||||
includes(ExtPlatformModule)
|
|
||||||
single { provideDatabaseBuilder(it) }
|
|
||||||
}
|
|
||||||
|
|
@ -67,8 +67,8 @@ kotlin {
|
||||||
implementation(libs.moko.geo.compose)
|
implementation(libs.moko.geo.compose)
|
||||||
implementation(libs.ui.backhandler)
|
implementation(libs.ui.backhandler)
|
||||||
|
|
||||||
implementation(projects.client)
|
|
||||||
implementation(projects.shared)
|
implementation(projects.shared)
|
||||||
|
implementation(projects.shared.data)
|
||||||
implementation(projects.ui.maps)
|
implementation(projects.ui.maps)
|
||||||
implementation(projects.ui.shared)
|
implementation(projects.ui.shared)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ package moe.lava.banksia.ui
|
||||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.ExperimentalComposeUiApi
|
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.di.AppModule
|
||||||
import moe.lava.banksia.ui.screens.map.MapScreen
|
import moe.lava.banksia.ui.screens.map.MapScreen
|
||||||
import org.koin.compose.KoinMultiplatformApplication
|
import org.koin.compose.KoinMultiplatformApplication
|
||||||
|
|
@ -14,7 +14,7 @@ import org.koin.dsl.koinConfiguration
|
||||||
@Composable
|
@Composable
|
||||||
fun App() {
|
fun App() {
|
||||||
KoinMultiplatformApplication(config = koinConfiguration {
|
KoinMultiplatformApplication(config = koinConfiguration {
|
||||||
modules(CommonModules, AppModule)
|
modules(coreDiModule, AppModule)
|
||||||
}) {
|
}) {
|
||||||
MapScreen()
|
MapScreen()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
package moe.lava.banksia.ui.di
|
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 moe.lava.banksia.ui.screens.map.MapScreenViewModel
|
||||||
import org.koin.core.module.dsl.viewModelOf
|
import org.koin.core.module.dsl.viewModelOf
|
||||||
import org.koin.dsl.module
|
import org.koin.dsl.module
|
||||||
|
|
||||||
val AppModule = module {
|
val AppModule = module {
|
||||||
includes(ClientModule)
|
includes(dataDiModule)
|
||||||
|
|
||||||
// ViewModel
|
// ViewModel
|
||||||
viewModelOf(::MapScreenViewModel)
|
viewModelOf(::MapScreenViewModel)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,9 +15,9 @@ import kotlinx.coroutines.flow.update
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.datetime.TimeZone
|
import kotlinx.datetime.TimeZone
|
||||||
import kotlinx.datetime.toInstant
|
import kotlinx.datetime.toInstant
|
||||||
import moe.lava.banksia.client.repository.RouteRepository
|
import moe.lava.banksia.core.data.repositories.RouteRepository
|
||||||
import moe.lava.banksia.client.repository.StopRepository
|
import moe.lava.banksia.core.data.repositories.StopRepository
|
||||||
import moe.lava.banksia.client.repository.StopTimeRepository
|
import moe.lava.banksia.core.data.repositories.StopTimeRepository
|
||||||
import moe.lava.banksia.data.ptv.PtvService
|
import moe.lava.banksia.data.ptv.PtvService
|
||||||
import moe.lava.banksia.model.Route
|
import moe.lava.banksia.model.Route
|
||||||
import moe.lava.banksia.model.RouteType
|
import moe.lava.banksia.model.RouteType
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue