Compare commits
2 commits
c55e3a3232
...
c912723c78
| Author | SHA1 | Date | |
|---|---|---|---|
| c912723c78 | |||
| 104a77b27e |
117 changed files with 355 additions and 312 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -18,6 +18,6 @@ captures
|
||||||
**/xcshareddata/WorkspaceSettings.xcsettings
|
**/xcshareddata/WorkspaceSettings.xcsettings
|
||||||
|
|
||||||
secrets.properties
|
secrets.properties
|
||||||
shared/src/commonMain/kotlin/moe/lava/banksia/Constants.kt
|
/core/src/commonMain/kotlin/moe/lava/banksia/core/Constants.kt
|
||||||
/data/
|
/data/
|
||||||
/data
|
/data
|
||||||
|
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
package moe.lava.banksia.client.data.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) {
|
|
||||||
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())
|
|
||||||
}
|
|
||||||
|
|
@ -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())
|
|
||||||
}
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
package moe.lava.banksia.client.repository
|
|
||||||
|
|
||||||
import moe.lava.banksia.client.data.stoptime.StopTimeLocalDataSource
|
|
||||||
import moe.lava.banksia.client.data.stoptime.StopTimeRemoteDataSource
|
|
||||||
import moe.lava.banksia.model.StopTimeDated
|
|
||||||
|
|
||||||
class StopTimeRepository(
|
|
||||||
private val local: StopTimeLocalDataSource,
|
|
||||||
private val remote: StopTimeRemoteDataSource,
|
|
||||||
) {
|
|
||||||
suspend fun getForStop(id: String): List<StopTimeDated> {
|
|
||||||
return local
|
|
||||||
.getAtStop(id)
|
|
||||||
.ifEmpty { remote.getAtStop(id) }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -14,7 +14,7 @@ room {
|
||||||
|
|
||||||
kotlin {
|
kotlin {
|
||||||
android {
|
android {
|
||||||
namespace = "moe.lava.banksia.shared"
|
namespace = "moe.lava.banksia.core"
|
||||||
compileSdk = libs.versions.android.compileSdk.get().toInt()
|
compileSdk = libs.versions.android.compileSdk.get().toInt()
|
||||||
|
|
||||||
compilerOptions {
|
compilerOptions {
|
||||||
|
|
@ -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(projects.shared)
|
implementation(libs.kotlinx.coroutines.core)
|
||||||
|
implementation(libs.kotlinx.datetime)
|
||||||
|
implementation(libs.kotlinx.serialization.json)
|
||||||
|
implementation(libs.kotlinx.serialization.protobuf)
|
||||||
|
|
||||||
|
implementation(projects.core)
|
||||||
|
implementation(projects.core.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
|
||||||
|
|
@ -7,22 +7,25 @@ import io.ktor.client.plugins.defaultRequest
|
||||||
import io.ktor.client.plugins.plugin
|
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.core.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.core.util.log
|
||||||
import moe.lava.banksia.data.ptv.PtvService
|
import moe.lava.banksia.data.ptv.PtvService
|
||||||
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,
|
||||||
) {
|
) {
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
package moe.lava.banksia.core.data.repositories
|
||||||
|
|
||||||
|
import moe.lava.banksia.core.data.sources.stoptime.StopTimeLocalDataSource
|
||||||
|
import moe.lava.banksia.core.data.sources.stoptime.StopTimeRemoteDataSource
|
||||||
|
import moe.lava.banksia.core.model.StopTimeDated
|
||||||
|
|
||||||
|
class StopTimeRepository internal constructor(
|
||||||
|
private val local: StopTimeLocalDataSource,
|
||||||
|
private val remote: StopTimeRemoteDataSource,
|
||||||
|
) {
|
||||||
|
suspend fun getForStop(id: String): List<StopTimeDated> {
|
||||||
|
return local
|
||||||
|
.getAtStop(id)
|
||||||
|
.ifEmpty { remote.getAtStop(id) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
package moe.lava.banksia.core.data.sources.route
|
||||||
|
|
||||||
|
import moe.lava.banksia.core.model.Route
|
||||||
|
import moe.lava.banksia.core.room.dao.RouteDao
|
||||||
|
import moe.lava.banksia.core.room.entity.asEntity
|
||||||
|
|
||||||
|
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())
|
||||||
|
}
|
||||||
|
|
@ -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.core.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.model.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
|
||||||
|
|
||||||
|
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.core.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.model.StopTimeDated
|
import moe.lava.banksia.core.model.StopTimeDated
|
||||||
import moe.lava.banksia.model.atDate
|
import moe.lava.banksia.core.model.atDate
|
||||||
import moe.lava.banksia.room.dao.StopTimeDao
|
import moe.lava.banksia.core.room.dao.StopTimeDao
|
||||||
import moe.lava.banksia.util.serialise
|
import moe.lava.banksia.core.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
|
||||||
|
|
@ -7,10 +7,10 @@ import io.ktor.client.request.parameter
|
||||||
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.model.StopTimeDated
|
import moe.lava.banksia.core.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,13 +1,13 @@
|
||||||
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
|
||||||
import kotlinx.datetime.TimeZone
|
import kotlinx.datetime.TimeZone
|
||||||
import kotlinx.datetime.todayIn
|
import kotlinx.datetime.todayIn
|
||||||
import moe.lava.banksia.model.Trip
|
import moe.lava.banksia.core.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
core/room/build.gradle.kts
Normal file
54
core/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.core)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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,7 +1,7 @@
|
||||||
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.core.model.RouteType
|
||||||
|
|
||||||
object RouteTypeConverter {
|
object RouteTypeConverter {
|
||||||
@TypeConverter
|
@TypeConverter
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
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.core.model.ShapePath
|
||||||
import moe.lava.banksia.util.Point
|
import moe.lava.banksia.core.util.Point
|
||||||
|
|
||||||
object ShapePathConverter {
|
object ShapePathConverter {
|
||||||
@TypeConverter
|
@TypeConverter
|
||||||
|
|
@ -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,9 +1,9 @@
|
||||||
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 moe.lava.banksia.model.Route
|
import moe.lava.banksia.core.model.Route
|
||||||
import moe.lava.banksia.model.RouteType
|
import moe.lava.banksia.core.model.RouteType
|
||||||
|
|
||||||
@Entity("Route")
|
@Entity("Route")
|
||||||
data class RouteEntity(
|
data class RouteEntity(
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
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
|
||||||
import androidx.room.PrimaryKey
|
import androidx.room.PrimaryKey
|
||||||
import kotlinx.datetime.LocalDate
|
import kotlinx.datetime.LocalDate
|
||||||
import moe.lava.banksia.model.Service
|
import moe.lava.banksia.core.model.Service
|
||||||
import moe.lava.banksia.util.deserialiseDaysBitflag
|
import moe.lava.banksia.core.util.deserialiseDaysBitflag
|
||||||
import moe.lava.banksia.util.serialise
|
import moe.lava.banksia.core.util.serialise
|
||||||
|
|
||||||
@Entity("Service")
|
@Entity("Service")
|
||||||
data class ServiceEntity(
|
data class ServiceEntity(
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
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
|
||||||
import kotlinx.datetime.LocalDate
|
import kotlinx.datetime.LocalDate
|
||||||
import moe.lava.banksia.model.ServiceException
|
import moe.lava.banksia.core.model.ServiceException
|
||||||
|
|
||||||
@Entity(
|
@Entity(
|
||||||
"ServiceException",
|
"ServiceException",
|
||||||
|
|
@ -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.model.Shape
|
import moe.lava.banksia.core.model.Shape
|
||||||
import moe.lava.banksia.model.ShapePath
|
import moe.lava.banksia.core.model.ShapePath
|
||||||
import moe.lava.banksia.room.converter.ShapePathConverter
|
import moe.lava.banksia.core.room.converter.ShapePathConverter
|
||||||
|
|
||||||
@Entity("Shape")
|
@Entity("Shape")
|
||||||
@TypeConverters(ShapePathConverter::class)
|
@TypeConverters(ShapePathConverter::class)
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
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
|
||||||
import androidx.room.ForeignKey
|
import androidx.room.ForeignKey
|
||||||
import androidx.room.ForeignKey.Companion.SET_NULL
|
import androidx.room.ForeignKey.Companion.SET_NULL
|
||||||
import androidx.room.PrimaryKey
|
import androidx.room.PrimaryKey
|
||||||
import moe.lava.banksia.model.Stop
|
import moe.lava.banksia.core.model.Stop
|
||||||
import moe.lava.banksia.util.Point
|
import moe.lava.banksia.core.util.Point
|
||||||
|
|
||||||
@Entity(
|
@Entity(
|
||||||
"Stop",
|
"Stop",
|
||||||
|
|
@ -1,13 +1,13 @@
|
||||||
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
|
||||||
import androidx.room.ForeignKey.Companion.CASCADE
|
import androidx.room.ForeignKey.Companion.CASCADE
|
||||||
import androidx.room.Index
|
import androidx.room.Index
|
||||||
import kotlinx.serialization.ExperimentalSerializationApi
|
import kotlinx.serialization.ExperimentalSerializationApi
|
||||||
import moe.lava.banksia.model.FutureTime
|
import moe.lava.banksia.core.model.FutureTime
|
||||||
import moe.lava.banksia.model.FutureTime.Companion.asInt
|
import moe.lava.banksia.core.model.FutureTime.Companion.asInt
|
||||||
import moe.lava.banksia.model.StopTime
|
import moe.lava.banksia.core.model.StopTime
|
||||||
|
|
||||||
@Entity(
|
@Entity(
|
||||||
"StopTime",
|
"StopTime",
|
||||||
|
|
@ -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
|
||||||
|
|
@ -6,7 +6,7 @@ import androidx.room.ForeignKey
|
||||||
import androidx.room.ForeignKey.Companion.CASCADE
|
import androidx.room.ForeignKey.Companion.CASCADE
|
||||||
import androidx.room.Index
|
import androidx.room.Index
|
||||||
import androidx.room.PrimaryKey
|
import androidx.room.PrimaryKey
|
||||||
import moe.lava.banksia.model.Trip
|
import moe.lava.banksia.core.model.Trip
|
||||||
|
|
||||||
@Entity(
|
@Entity(
|
||||||
"Trip",
|
"Trip",
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
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 moe.lava.banksia.model.VersionMetadata
|
import moe.lava.banksia.core.model.VersionMetadata
|
||||||
|
|
||||||
@Entity(
|
@Entity(
|
||||||
"VersionMetadata",
|
"VersionMetadata",
|
||||||
|
|
@ -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 { }
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package moe.lava.banksia.util
|
package moe.lava.banksia.core.util
|
||||||
|
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package moe.lava.banksia.model
|
package moe.lava.banksia.core.model
|
||||||
|
|
||||||
import kotlinx.datetime.DateTimeUnit
|
import kotlinx.datetime.DateTimeUnit
|
||||||
import kotlinx.datetime.LocalDate
|
import kotlinx.datetime.LocalDate
|
||||||
|
|
@ -12,7 +12,7 @@ import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
|
||||||
import kotlinx.serialization.descriptors.SerialDescriptor
|
import kotlinx.serialization.descriptors.SerialDescriptor
|
||||||
import kotlinx.serialization.encoding.Decoder
|
import kotlinx.serialization.encoding.Decoder
|
||||||
import kotlinx.serialization.encoding.Encoder
|
import kotlinx.serialization.encoding.Encoder
|
||||||
import moe.lava.banksia.model.FutureTime.Companion.asInt
|
import moe.lava.banksia.core.model.FutureTime.Companion.asInt
|
||||||
|
|
||||||
@Serializable(FutureTimeSerialiser::class)
|
@Serializable(FutureTimeSerialiser::class)
|
||||||
data class FutureTime(
|
data class FutureTime(
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package moe.lava.banksia.model
|
package moe.lava.banksia.core.model
|
||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package moe.lava.banksia.model
|
package moe.lava.banksia.core.model
|
||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
|
@ -15,6 +15,6 @@ enum class RouteType(val value: Int) {
|
||||||
;
|
;
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun from(value: Int) = RouteType.entries.first { it.value == value }
|
fun from(value: Int) = entries.first { it.value == value }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package moe.lava.banksia.model
|
package moe.lava.banksia.core.model
|
||||||
|
|
||||||
data class Run(
|
data class Run(
|
||||||
val ref: String,
|
val ref: String,
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package moe.lava.banksia.model
|
package moe.lava.banksia.core.model
|
||||||
|
|
||||||
import kotlinx.datetime.DayOfWeek
|
import kotlinx.datetime.DayOfWeek
|
||||||
import kotlinx.datetime.LocalDate
|
import kotlinx.datetime.LocalDate
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package moe.lava.banksia.model
|
package moe.lava.banksia.core.model
|
||||||
|
|
||||||
import kotlinx.datetime.LocalDate
|
import kotlinx.datetime.LocalDate
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package moe.lava.banksia.model
|
package moe.lava.banksia.core.model
|
||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
import moe.lava.banksia.util.Point
|
import moe.lava.banksia.core.util.Point
|
||||||
|
|
||||||
typealias ShapePath = List<Point>
|
typealias ShapePath = List<Point>
|
||||||
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package moe.lava.banksia.model
|
package moe.lava.banksia.core.model
|
||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
import moe.lava.banksia.util.Point
|
import moe.lava.banksia.core.util.Point
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class Stop(
|
data class Stop(
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package moe.lava.banksia.model
|
package moe.lava.banksia.core.model
|
||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package moe.lava.banksia.model
|
package moe.lava.banksia.core.model
|
||||||
|
|
||||||
import kotlinx.datetime.LocalDate
|
import kotlinx.datetime.LocalDate
|
||||||
import kotlinx.datetime.LocalDateTime
|
import kotlinx.datetime.LocalDateTime
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package moe.lava.banksia.model
|
package moe.lava.banksia.core.model
|
||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package moe.lava.banksia.model
|
package moe.lava.banksia.core.model
|
||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package moe.lava.banksia.util
|
package moe.lava.banksia.core.util
|
||||||
|
|
||||||
/** Wraps an arbitrary value, such that equality checks are forced to be done by reference */
|
/** Wraps an arbitrary value, such that equality checks are forced to be done by reference */
|
||||||
class BoxedValue<T>(val value: T) {
|
class BoxedValue<T>(val value: T) {
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package moe.lava.banksia.util
|
package moe.lava.banksia.core.util
|
||||||
|
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package moe.lava.banksia.util
|
package moe.lava.banksia.core.util
|
||||||
|
|
||||||
import kotlinx.datetime.DayOfWeek
|
import kotlinx.datetime.DayOfWeek
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package moe.lava.banksia.util
|
package moe.lava.banksia.core.util
|
||||||
|
|
||||||
fun error(tag: String, throwable: Throwable) = error(tag, "", throwable)
|
fun error(tag: String, throwable: Throwable) = error(tag, "", throwable)
|
||||||
expect fun log(tag: String, msg: String)
|
expect fun log(tag: String, msg: String)
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package moe.lava.banksia.util
|
package moe.lava.banksia.core.util
|
||||||
|
|
||||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package moe.lava.banksia.util
|
package moe.lava.banksia.core.util
|
||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
|
@ -16,7 +16,12 @@ import io.ktor.serialization.kotlinx.json.json
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
import moe.lava.banksia.Constants
|
import moe.lava.banksia.core.Constants
|
||||||
|
import moe.lava.banksia.core.model.RouteType
|
||||||
|
import moe.lava.banksia.core.util.LoopFlow.Companion.initWith
|
||||||
|
import moe.lava.banksia.core.util.error
|
||||||
|
import moe.lava.banksia.core.util.log
|
||||||
|
import moe.lava.banksia.core.util.loopFlow
|
||||||
import moe.lava.banksia.data.ptv.structures.PtvDeparture
|
import moe.lava.banksia.data.ptv.structures.PtvDeparture
|
||||||
import moe.lava.banksia.data.ptv.structures.PtvDirection
|
import moe.lava.banksia.data.ptv.structures.PtvDirection
|
||||||
import moe.lava.banksia.data.ptv.structures.PtvRoute
|
import moe.lava.banksia.data.ptv.structures.PtvRoute
|
||||||
|
|
@ -24,11 +29,6 @@ import moe.lava.banksia.data.ptv.structures.PtvRouteType
|
||||||
import moe.lava.banksia.data.ptv.structures.PtvRouteType.Companion.asPtvType
|
import moe.lava.banksia.data.ptv.structures.PtvRouteType.Companion.asPtvType
|
||||||
import moe.lava.banksia.data.ptv.structures.PtvRun
|
import moe.lava.banksia.data.ptv.structures.PtvRun
|
||||||
import moe.lava.banksia.data.ptv.structures.PtvStop
|
import moe.lava.banksia.data.ptv.structures.PtvStop
|
||||||
import moe.lava.banksia.model.RouteType
|
|
||||||
import moe.lava.banksia.util.LoopFlow.Companion.initWith
|
|
||||||
import moe.lava.banksia.util.error
|
|
||||||
import moe.lava.banksia.util.log
|
|
||||||
import moe.lava.banksia.util.loopFlow
|
|
||||||
import okio.ByteString.Companion.encodeUtf8
|
import okio.ByteString.Companion.encodeUtf8
|
||||||
import kotlin.random.Random
|
import kotlin.random.Random
|
||||||
|
|
||||||
|
|
@ -2,7 +2,7 @@ package moe.lava.banksia.data.ptv.structures
|
||||||
|
|
||||||
import kotlinx.serialization.SerialName
|
import kotlinx.serialization.SerialName
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
import moe.lava.banksia.model.RouteType
|
import moe.lava.banksia.core.model.RouteType
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class PtvRoute(
|
data class PtvRoute(
|
||||||
|
|
@ -7,7 +7,7 @@ import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
|
||||||
import kotlinx.serialization.descriptors.SerialDescriptor
|
import kotlinx.serialization.descriptors.SerialDescriptor
|
||||||
import kotlinx.serialization.encoding.Decoder
|
import kotlinx.serialization.encoding.Decoder
|
||||||
import kotlinx.serialization.encoding.Encoder
|
import kotlinx.serialization.encoding.Encoder
|
||||||
import moe.lava.banksia.model.RouteType
|
import moe.lava.banksia.core.model.RouteType
|
||||||
|
|
||||||
object PtvRouteTypeSerialiser : KSerializer<PtvRouteType> {
|
object PtvRouteTypeSerialiser : KSerializer<PtvRouteType> {
|
||||||
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor(
|
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor(
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package moe.lava.banksia.util
|
package moe.lava.banksia.core.util
|
||||||
|
|
||||||
actual fun log(tag: String, msg: String) {
|
actual fun log(tag: String, msg: String) {
|
||||||
TODO("Not yet implemented")
|
TODO("Not yet implemented")
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package moe.lava.banksia.util
|
package moe.lava.banksia.core.util
|
||||||
|
|
||||||
actual fun log(tag: String, msg: String) {
|
actual fun log(tag: String, msg: String) {
|
||||||
println("[$tag] $msg")
|
println("[$tag] $msg")
|
||||||
|
|
@ -19,7 +19,8 @@ kotlin {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation(projects.shared)
|
implementation(projects.core)
|
||||||
|
implementation(projects.core.room)
|
||||||
implementation(projects.server.gtfs)
|
implementation(projects.server.gtfs)
|
||||||
implementation(projects.server.gtfsRt)
|
implementation(projects.server.gtfsRt)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ kotlin {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation(projects.shared)
|
implementation(projects.core)
|
||||||
implementation(libs.kotlinx.serialization.csv)
|
implementation(libs.kotlinx.serialization.csv)
|
||||||
implementation(libs.kotlinx.datetime)
|
implementation(libs.kotlinx.datetime)
|
||||||
implementation(libs.ktor.client.contentnegotiation)
|
implementation(libs.ktor.client.contentnegotiation)
|
||||||
|
|
|
||||||
|
|
@ -17,15 +17,16 @@ import kotlinx.datetime.LocalDate
|
||||||
import kotlinx.serialization.decodeFromString
|
import kotlinx.serialization.decodeFromString
|
||||||
import kotlinx.serialization.modules.EmptySerializersModule
|
import kotlinx.serialization.modules.EmptySerializersModule
|
||||||
import kotlinx.serialization.serializer
|
import kotlinx.serialization.serializer
|
||||||
import moe.lava.banksia.Constants
|
import moe.lava.banksia.core.Constants
|
||||||
import moe.lava.banksia.model.Route
|
import moe.lava.banksia.core.model.Route
|
||||||
import moe.lava.banksia.model.RouteType
|
import moe.lava.banksia.core.model.RouteType
|
||||||
import moe.lava.banksia.model.Service
|
import moe.lava.banksia.core.model.Service
|
||||||
import moe.lava.banksia.model.ServiceException
|
import moe.lava.banksia.core.model.ServiceException
|
||||||
import moe.lava.banksia.model.Shape
|
import moe.lava.banksia.core.model.Shape
|
||||||
import moe.lava.banksia.model.Stop
|
import moe.lava.banksia.core.model.Stop
|
||||||
import moe.lava.banksia.model.StopTime
|
import moe.lava.banksia.core.model.StopTime
|
||||||
import moe.lava.banksia.model.Trip
|
import moe.lava.banksia.core.model.Trip
|
||||||
|
import moe.lava.banksia.core.util.Point
|
||||||
import moe.lava.banksia.server.gtfs.structures.GtfsRoute
|
import moe.lava.banksia.server.gtfs.structures.GtfsRoute
|
||||||
import moe.lava.banksia.server.gtfs.structures.GtfsService
|
import moe.lava.banksia.server.gtfs.structures.GtfsService
|
||||||
import moe.lava.banksia.server.gtfs.structures.GtfsServiceException
|
import moe.lava.banksia.server.gtfs.structures.GtfsServiceException
|
||||||
|
|
@ -33,7 +34,6 @@ import moe.lava.banksia.server.gtfs.structures.GtfsShape
|
||||||
import moe.lava.banksia.server.gtfs.structures.GtfsStop
|
import moe.lava.banksia.server.gtfs.structures.GtfsStop
|
||||||
import moe.lava.banksia.server.gtfs.structures.GtfsStopTime
|
import moe.lava.banksia.server.gtfs.structures.GtfsStopTime
|
||||||
import moe.lava.banksia.server.gtfs.structures.GtfsTrip
|
import moe.lava.banksia.server.gtfs.structures.GtfsTrip
|
||||||
import moe.lava.banksia.util.Point
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.zip.ZipFile
|
import java.util.zip.ZipFile
|
||||||
import kotlin.time.ExperimentalTime
|
import kotlin.time.ExperimentalTime
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package moe.lava.banksia.server.gtfs.structures
|
package moe.lava.banksia.server.gtfs.structures
|
||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
import moe.lava.banksia.model.FutureTime
|
import moe.lava.banksia.core.model.FutureTime
|
||||||
|
|
||||||
@Suppress("PropertyName")
|
@Suppress("PropertyName")
|
||||||
@Serializable
|
@Serializable
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ kotlin {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation(projects.shared)
|
implementation(projects.core)
|
||||||
implementation(libs.okio)
|
implementation(libs.okio)
|
||||||
implementation(libs.koin.core)
|
implementation(libs.koin.core)
|
||||||
implementation(libs.ktor.client.core)
|
implementation(libs.ktor.client.core)
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ import kotlinx.coroutines.sync.withLock
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import kotlinx.datetime.TimeZone
|
import kotlinx.datetime.TimeZone
|
||||||
import kotlinx.datetime.toLocalDateTime
|
import kotlinx.datetime.toLocalDateTime
|
||||||
import moe.lava.banksia.util.log
|
import moe.lava.banksia.core.util.log
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import kotlin.time.Instant
|
import kotlin.time.Instant
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,9 +15,9 @@ import kotlinx.coroutines.flow.MutableSharedFlow
|
||||||
import kotlinx.coroutines.flow.SharedFlow
|
import kotlinx.coroutines.flow.SharedFlow
|
||||||
import kotlinx.coroutines.joinAll
|
import kotlinx.coroutines.joinAll
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import moe.lava.banksia.Constants
|
import moe.lava.banksia.core.Constants
|
||||||
import moe.lava.banksia.util.LogScope
|
import moe.lava.banksia.core.util.LogScope
|
||||||
import moe.lava.banksia.util.log
|
import moe.lava.banksia.core.util.log
|
||||||
|
|
||||||
private val types = arrayOf(
|
private val types = arrayOf(
|
||||||
"metro/trip-updates",
|
"metro/trip-updates",
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package moe.lava.banksia.server.gtfsrt
|
package moe.lava.banksia.server.gtfsrt
|
||||||
|
|
||||||
import com.google.transit.realtime.FeedMessage
|
import com.google.transit.realtime.FeedMessage
|
||||||
import moe.lava.banksia.util.Point
|
import moe.lava.banksia.core.util.Point
|
||||||
|
|
||||||
class RealtimeVehiclePositions(data: FeedMessage) : GtfsRealtime(data) {
|
class RealtimeVehiclePositions(data: FeedMessage) : GtfsRealtime(data) {
|
||||||
private val positions = mutableMapOf<String, Point>()
|
private val positions = mutableMapOf<String, Point>()
|
||||||
|
|
|
||||||
|
|
@ -18,16 +18,15 @@ import kotlinx.coroutines.withContext
|
||||||
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.Constants
|
import moe.lava.banksia.core.Constants
|
||||||
import moe.lava.banksia.di.CommonModules
|
import moe.lava.banksia.core.model.atDate
|
||||||
import moe.lava.banksia.model.atDate
|
import moe.lava.banksia.core.room.dao.RouteDao
|
||||||
import moe.lava.banksia.room.dao.RouteDao
|
import moe.lava.banksia.core.room.dao.StopDao
|
||||||
import moe.lava.banksia.room.dao.StopDao
|
import moe.lava.banksia.core.room.dao.StopTimeDao
|
||||||
import moe.lava.banksia.room.dao.StopTimeDao
|
import moe.lava.banksia.core.room.dao.VersionMetadataDao
|
||||||
import moe.lava.banksia.room.dao.VersionMetadataDao
|
import moe.lava.banksia.core.util.serialise
|
||||||
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 org.koin.dsl.module
|
import org.koin.dsl.module
|
||||||
import org.koin.ktor.ext.inject
|
import org.koin.ktor.ext.inject
|
||||||
import org.koin.ktor.plugin.Koin
|
import org.koin.ktor.plugin.Koin
|
||||||
|
|
@ -44,14 +43,12 @@ fun Application.module() {
|
||||||
}
|
}
|
||||||
install(Koin) {
|
install(Koin) {
|
||||||
modules(module { single { log } })
|
modules(module { single { log } })
|
||||||
modules(CommonModules, ServerModules)
|
modules(ServerModules)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val gtfsr by inject<GtfsrtService>()
|
||||||
@Suppress("KotlinConstantConditions")
|
@Suppress("KotlinConstantConditions")
|
||||||
if (!Constants.devMode) {
|
launch { gtfsr.start(this, !Constants.devMode) }
|
||||||
val gtfsr by inject<GtfsrtService>()
|
|
||||||
launch { gtfsr.start(this, true) }
|
|
||||||
}
|
|
||||||
|
|
||||||
routing {
|
routing {
|
||||||
if (Constants.devMode) {
|
if (Constants.devMode) {
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
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.core.util.log
|
||||||
import java.security.MessageDigest
|
import java.security.MessageDigest
|
||||||
|
|
||||||
class GtfsDataFixer(
|
class GtfsDataFixer(
|
||||||
|
|
|
||||||
|
|
@ -3,15 +3,15 @@ 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.model.Route
|
import moe.lava.banksia.core.model.Route
|
||||||
import moe.lava.banksia.model.Service
|
import moe.lava.banksia.core.model.Service
|
||||||
import moe.lava.banksia.model.ServiceException
|
import moe.lava.banksia.core.model.ServiceException
|
||||||
import moe.lava.banksia.model.Shape
|
import moe.lava.banksia.core.model.Shape
|
||||||
import moe.lava.banksia.model.Stop
|
import moe.lava.banksia.core.model.Stop
|
||||||
import moe.lava.banksia.model.StopTime
|
import moe.lava.banksia.core.model.StopTime
|
||||||
import moe.lava.banksia.model.Trip
|
import moe.lava.banksia.core.model.Trip
|
||||||
import moe.lava.banksia.room.Database
|
import moe.lava.banksia.core.room.Database
|
||||||
import moe.lava.banksia.room.entity.asEntity
|
import moe.lava.banksia.core.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(":core")
|
||||||
|
include(":core:data")
|
||||||
|
include(":core:room")
|
||||||
include(":ui")
|
include(":ui")
|
||||||
include(":ui:maps")
|
include(":ui:maps")
|
||||||
include(":ui:shared")
|
include(":ui:shared")
|
||||||
|
|
|
||||||
|
|
@ -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.core)
|
||||||
implementation(projects.shared)
|
implementation(projects.core.data)
|
||||||
implementation(projects.ui.maps)
|
implementation(projects.ui.maps)
|
||||||
implementation(projects.ui.shared)
|
implementation(projects.ui.shared)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ kotlin {
|
||||||
implementation(libs.compose.material3)
|
implementation(libs.compose.material3)
|
||||||
implementation(libs.compose.ui)
|
implementation(libs.compose.ui)
|
||||||
|
|
||||||
implementation(projects.shared)
|
implementation(projects.core)
|
||||||
implementation(projects.ui.shared)
|
implementation(projects.ui.shared)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import kotlinx.serialization.json.JsonObject
|
import kotlinx.serialization.json.JsonObject
|
||||||
import moe.lava.banksia.Constants
|
import moe.lava.banksia.core.Constants
|
||||||
import moe.lava.banksia.ui.map.mappers.routeColorExpression
|
import moe.lava.banksia.ui.map.mappers.routeColorExpression
|
||||||
import moe.lava.banksia.ui.platform.BanksiaTheme
|
import moe.lava.banksia.ui.platform.BanksiaTheme
|
||||||
import org.maplibre.compose.camera.CameraPosition
|
import org.maplibre.compose.camera.CameraPosition
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,11 @@ import androidx.compose.foundation.layout.WindowInsets
|
||||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
import moe.lava.banksia.core.util.Point
|
||||||
import moe.lava.banksia.ui.map.mappers.asFeatures
|
import moe.lava.banksia.ui.map.mappers.asFeatures
|
||||||
import moe.lava.banksia.ui.map.mappers.toPosition
|
import moe.lava.banksia.ui.map.mappers.toPosition
|
||||||
import moe.lava.banksia.ui.map.util.Marker
|
import moe.lava.banksia.ui.map.util.Marker
|
||||||
import moe.lava.banksia.ui.platform.BanksiaTheme
|
import moe.lava.banksia.ui.platform.BanksiaTheme
|
||||||
import moe.lava.banksia.util.Point
|
|
||||||
|
|
||||||
internal val MELBOURNE = Point(-37.8136, 144.9631)
|
internal val MELBOURNE = Point(-37.8136, 144.9631)
|
||||||
internal val MELBOURNE_POS = MELBOURNE.toPosition()
|
internal val MELBOURNE_POS = MELBOURNE.toPosition()
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue