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
|
||||
|
||||
secrets.properties
|
||||
shared/src/commonMain/kotlin/moe/lava/banksia/Constants.kt
|
||||
/core/src/commonMain/kotlin/moe/lava/banksia/core/Constants.kt
|
||||
/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 {
|
||||
android {
|
||||
namespace = "moe.lava.banksia.shared"
|
||||
namespace = "moe.lava.banksia.core"
|
||||
compileSdk = libs.versions.android.compileSdk.get().toInt()
|
||||
|
||||
compilerOptions {
|
||||
|
|
@ -4,11 +4,12 @@ plugins {
|
|||
alias(libs.plugins.kotlinMultiplatform)
|
||||
alias(libs.plugins.kotlinSerialization)
|
||||
alias(libs.plugins.androidMultiplatformLibrary)
|
||||
alias(libs.plugins.ksp)
|
||||
}
|
||||
|
||||
kotlin {
|
||||
android {
|
||||
namespace = "moe.lava.banksia.client"
|
||||
namespace = "moe.lava.banksia.core.data"
|
||||
compileSdk = libs.versions.android.compileSdk.get().toInt()
|
||||
|
||||
compilerOptions {
|
||||
|
|
@ -23,21 +24,29 @@ kotlin {
|
|||
iosArm64()
|
||||
iosSimulatorArm64()
|
||||
|
||||
jvm()
|
||||
|
||||
sourceSets {
|
||||
androidMain.dependencies {
|
||||
implementation(libs.compose.ui.tooling.preview)
|
||||
implementation(libs.androidx.activity.compose)
|
||||
implementation(libs.kotlinx.coroutines.android)
|
||||
implementation(libs.play.services.location)
|
||||
implementation(libs.koin.compose)
|
||||
implementation(libs.ktor.client.okhttp)
|
||||
}
|
||||
commonMain.dependencies {
|
||||
implementation(libs.okio)
|
||||
implementation(libs.koin.core)
|
||||
implementation(libs.kotlinx.coroutines.core)
|
||||
implementation(libs.kotlinx.datetime)
|
||||
implementation(libs.ktor.client.core)
|
||||
implementation(libs.ktor.client.contentnegotiation)
|
||||
implementation(libs.ktor.serialization.kotlinx.json)
|
||||
implementation(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.plugins.HttpSend
|
||||
|
|
@ -7,22 +7,25 @@ import io.ktor.client.plugins.defaultRequest
|
|||
import io.ktor.client.plugins.plugin
|
||||
import io.ktor.serialization.kotlinx.json.json
|
||||
import kotlinx.serialization.json.Json
|
||||
import moe.lava.banksia.Constants
|
||||
import moe.lava.banksia.client.data.route.RouteLocalDataSource
|
||||
import moe.lava.banksia.client.data.route.RouteRemoteDataSource
|
||||
import moe.lava.banksia.client.data.stop.StopLocalDataSource
|
||||
import moe.lava.banksia.client.data.stop.StopRemoteDataSource
|
||||
import moe.lava.banksia.client.data.stoptime.StopTimeLocalDataSource
|
||||
import moe.lava.banksia.client.data.stoptime.StopTimeRemoteDataSource
|
||||
import moe.lava.banksia.client.repository.RouteRepository
|
||||
import moe.lava.banksia.client.repository.StopRepository
|
||||
import moe.lava.banksia.client.repository.StopTimeRepository
|
||||
import moe.lava.banksia.core.Constants
|
||||
import moe.lava.banksia.core.data.repositories.RouteRepository
|
||||
import moe.lava.banksia.core.data.repositories.StopRepository
|
||||
import moe.lava.banksia.core.data.repositories.StopTimeRepository
|
||||
import moe.lava.banksia.core.data.sources.route.RouteLocalDataSource
|
||||
import moe.lava.banksia.core.data.sources.route.RouteRemoteDataSource
|
||||
import moe.lava.banksia.core.data.sources.stop.StopLocalDataSource
|
||||
import moe.lava.banksia.core.data.sources.stop.StopRemoteDataSource
|
||||
import moe.lava.banksia.core.data.sources.stoptime.StopTimeLocalDataSource
|
||||
import moe.lava.banksia.core.data.sources.stoptime.StopTimeRemoteDataSource
|
||||
import moe.lava.banksia.core.room.roomDiModule
|
||||
import moe.lava.banksia.core.util.log
|
||||
import moe.lava.banksia.data.ptv.PtvService
|
||||
import moe.lava.banksia.util.log
|
||||
import org.koin.core.module.dsl.singleOf
|
||||
import org.koin.dsl.module
|
||||
|
||||
val ClientModule = module {
|
||||
val dataDiModule = module {
|
||||
includes(roomDiModule)
|
||||
|
||||
// HTTP Clients
|
||||
singleOf(::PtvService)
|
||||
single {
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
package moe.lava.banksia.client.repository
|
||||
package moe.lava.banksia.core.data.repositories
|
||||
|
||||
import kotlinx.coroutines.sync.Mutex
|
||||
import kotlinx.coroutines.sync.withLock
|
||||
import moe.lava.banksia.client.data.route.RouteLocalDataSource
|
||||
import moe.lava.banksia.client.data.route.RouteRemoteDataSource
|
||||
import moe.lava.banksia.core.data.sources.route.RouteLocalDataSource
|
||||
import moe.lava.banksia.core.data.sources.route.RouteRemoteDataSource
|
||||
|
||||
class RouteRepository(
|
||||
class RouteRepository internal constructor(
|
||||
private val local: RouteLocalDataSource,
|
||||
private val remote: RouteRemoteDataSource,
|
||||
) {
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
package moe.lava.banksia.client.repository
|
||||
package moe.lava.banksia.core.data.repositories
|
||||
|
||||
import kotlinx.coroutines.sync.Mutex
|
||||
import kotlinx.coroutines.sync.withLock
|
||||
import moe.lava.banksia.client.data.stop.StopLocalDataSource
|
||||
import moe.lava.banksia.client.data.stop.StopRemoteDataSource
|
||||
import moe.lava.banksia.core.data.sources.stop.StopLocalDataSource
|
||||
import moe.lava.banksia.core.data.sources.stop.StopRemoteDataSource
|
||||
|
||||
class StopRepository(
|
||||
class StopRepository internal constructor(
|
||||
private val local: StopLocalDataSource,
|
||||
private val remote: StopRemoteDataSource,
|
||||
) {
|
||||
|
|
@ -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.call.body
|
||||
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 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.call.body
|
||||
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 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.TimeZone
|
||||
import kotlinx.datetime.todayIn
|
||||
import moe.lava.banksia.model.StopTimeDated
|
||||
import moe.lava.banksia.model.atDate
|
||||
import moe.lava.banksia.room.dao.StopTimeDao
|
||||
import moe.lava.banksia.util.serialise
|
||||
import moe.lava.banksia.core.model.StopTimeDated
|
||||
import moe.lava.banksia.core.model.atDate
|
||||
import moe.lava.banksia.core.room.dao.StopTimeDao
|
||||
import moe.lava.banksia.core.util.serialise
|
||||
import kotlin.time.Clock
|
||||
|
||||
class StopTimeLocalDataSource(
|
||||
internal class StopTimeLocalDataSource(
|
||||
private val stopTimeDao: StopTimeDao,
|
||||
) {
|
||||
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.call.body
|
||||
|
|
@ -7,10 +7,10 @@ import io.ktor.client.request.parameter
|
|||
import kotlinx.datetime.LocalDate
|
||||
import kotlinx.datetime.TimeZone
|
||||
import kotlinx.datetime.todayIn
|
||||
import moe.lava.banksia.model.StopTimeDated
|
||||
import moe.lava.banksia.core.model.StopTimeDated
|
||||
import kotlin.time.Clock
|
||||
|
||||
class StopTimeRemoteDataSource(
|
||||
internal class StopTimeRemoteDataSource(
|
||||
private val client: HttpClient,
|
||||
) {
|
||||
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 kotlinx.datetime.DayOfWeek
|
||||
import kotlinx.datetime.TimeZone
|
||||
import kotlinx.datetime.todayIn
|
||||
import moe.lava.banksia.model.Trip
|
||||
import moe.lava.banksia.core.model.Trip
|
||||
import kotlin.time.Clock
|
||||
|
||||
class TripRemoteDataSource(
|
||||
internal class TripRemoteDataSource(
|
||||
private val client: HttpClient,
|
||||
) {
|
||||
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 androidx.room.Room
|
||||
import androidx.room.RoomDatabase
|
||||
import moe.lava.banksia.room.Database
|
||||
import org.koin.core.parameter.ParametersHolder
|
||||
import org.koin.core.scope.Scope
|
||||
import org.koin.dsl.module
|
||||
|
||||
class AndroidDatabaseBuilder(val ctx: Context) : PlatformDatabaseBuilder {
|
||||
override fun getBuilder(): RoomDatabase.Builder<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())
|
||||
|
||||
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.RoomDatabase
|
||||
|
|
@ -10,23 +10,23 @@ import androidx.sqlite.driver.bundled.BundledSQLiteDriver
|
|||
import androidx.sqlite.execSQL
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.IO
|
||||
import moe.lava.banksia.room.converter.RouteTypeConverter
|
||||
import moe.lava.banksia.room.dao.RouteDao
|
||||
import moe.lava.banksia.room.dao.ServiceDao
|
||||
import moe.lava.banksia.room.dao.ServiceExceptionDao
|
||||
import moe.lava.banksia.room.dao.ShapeDao
|
||||
import moe.lava.banksia.room.dao.StopDao
|
||||
import moe.lava.banksia.room.dao.StopTimeDao
|
||||
import moe.lava.banksia.room.dao.TripDao
|
||||
import moe.lava.banksia.room.dao.VersionMetadataDao
|
||||
import moe.lava.banksia.room.entity.RouteEntity
|
||||
import moe.lava.banksia.room.entity.ServiceEntity
|
||||
import moe.lava.banksia.room.entity.ServiceExceptionEntity
|
||||
import moe.lava.banksia.room.entity.ShapeEntity
|
||||
import moe.lava.banksia.room.entity.StopEntity
|
||||
import moe.lava.banksia.room.entity.StopTimeEntity
|
||||
import moe.lava.banksia.room.entity.TripEntity
|
||||
import moe.lava.banksia.room.entity.VersionMetadataEntity
|
||||
import moe.lava.banksia.core.room.converter.RouteTypeConverter
|
||||
import moe.lava.banksia.core.room.dao.RouteDao
|
||||
import moe.lava.banksia.core.room.dao.ServiceDao
|
||||
import moe.lava.banksia.core.room.dao.ServiceExceptionDao
|
||||
import moe.lava.banksia.core.room.dao.ShapeDao
|
||||
import moe.lava.banksia.core.room.dao.StopDao
|
||||
import moe.lava.banksia.core.room.dao.StopTimeDao
|
||||
import moe.lava.banksia.core.room.dao.TripDao
|
||||
import moe.lava.banksia.core.room.dao.VersionMetadataDao
|
||||
import moe.lava.banksia.core.room.entity.RouteEntity
|
||||
import moe.lava.banksia.core.room.entity.ServiceEntity
|
||||
import moe.lava.banksia.core.room.entity.ServiceExceptionEntity
|
||||
import moe.lava.banksia.core.room.entity.ShapeEntity
|
||||
import moe.lava.banksia.core.room.entity.StopEntity
|
||||
import moe.lava.banksia.core.room.entity.StopTimeEntity
|
||||
import moe.lava.banksia.core.room.entity.TripEntity
|
||||
import moe.lava.banksia.core.room.entity.VersionMetadataEntity
|
||||
import androidx.room.Database as DatabaseAnnotation
|
||||
|
||||
@DatabaseAnnotation(
|
||||
|
|
@ -1,12 +1,14 @@
|
|||
package moe.lava.banksia.di
|
||||
package moe.lava.banksia.core.room
|
||||
|
||||
import moe.lava.banksia.room.Database
|
||||
import androidx.room.RoomDatabase
|
||||
import org.koin.core.parameter.ParametersHolder
|
||||
import org.koin.core.scope.Scope
|
||||
import org.koin.dsl.module
|
||||
|
||||
val CommonModules = module {
|
||||
includes(PlatformModule)
|
||||
|
||||
val roomDiModule = module {
|
||||
single { provideDatabaseBuilder(it) }
|
||||
single { Database.build(get<PlatformDatabaseBuilder>().getBuilder()) }
|
||||
|
||||
single { get<Database>().versionMetadataDao }
|
||||
single { get<Database>().routeDao }
|
||||
single { get<Database>().serviceDao }
|
||||
|
|
@ -16,3 +18,9 @@ val CommonModules = module {
|
|||
single { get<Database>().stopTimeDao }
|
||||
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 moe.lava.banksia.model.RouteType
|
||||
import moe.lava.banksia.core.model.RouteType
|
||||
|
||||
object RouteTypeConverter {
|
||||
@TypeConverter
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
package moe.lava.banksia.room.converter
|
||||
package moe.lava.banksia.core.room.converter
|
||||
|
||||
import androidx.room.TypeConverter
|
||||
import moe.lava.banksia.model.ShapePath
|
||||
import moe.lava.banksia.util.Point
|
||||
import moe.lava.banksia.core.model.ShapePath
|
||||
import moe.lava.banksia.core.util.Point
|
||||
|
||||
object ShapePathConverter {
|
||||
@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.Delete
|
||||
import androidx.room.Insert
|
||||
import androidx.room.OnConflictStrategy.Companion.REPLACE
|
||||
import androidx.room.Query
|
||||
import moe.lava.banksia.room.entity.RouteEntity
|
||||
import moe.lava.banksia.room.entity.StopEntity
|
||||
import moe.lava.banksia.core.room.entity.RouteEntity
|
||||
import moe.lava.banksia.core.room.entity.StopEntity
|
||||
|
||||
@Dao
|
||||
interface RouteDao {
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
package moe.lava.banksia.room.dao
|
||||
package moe.lava.banksia.core.room.dao
|
||||
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Delete
|
||||
import androidx.room.Insert
|
||||
import androidx.room.OnConflictStrategy.Companion.REPLACE
|
||||
import androidx.room.Query
|
||||
import moe.lava.banksia.room.entity.ServiceEntity
|
||||
import moe.lava.banksia.core.room.entity.ServiceEntity
|
||||
|
||||
@Dao
|
||||
interface ServiceDao {
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
package moe.lava.banksia.room.dao
|
||||
package moe.lava.banksia.core.room.dao
|
||||
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Delete
|
||||
import androidx.room.Insert
|
||||
import androidx.room.OnConflictStrategy.Companion.REPLACE
|
||||
import androidx.room.Query
|
||||
import moe.lava.banksia.room.entity.ServiceExceptionEntity
|
||||
import moe.lava.banksia.core.room.entity.ServiceExceptionEntity
|
||||
|
||||
@Dao
|
||||
interface ServiceExceptionDao {
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
package moe.lava.banksia.room.dao
|
||||
package moe.lava.banksia.core.room.dao
|
||||
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Delete
|
||||
import androidx.room.Insert
|
||||
import androidx.room.OnConflictStrategy.Companion.REPLACE
|
||||
import androidx.room.Query
|
||||
import moe.lava.banksia.room.entity.ShapeEntity
|
||||
import moe.lava.banksia.core.room.entity.ShapeEntity
|
||||
|
||||
@Dao
|
||||
interface ShapeDao {
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
package moe.lava.banksia.room.dao
|
||||
package moe.lava.banksia.core.room.dao
|
||||
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Delete
|
||||
import androidx.room.Insert
|
||||
import androidx.room.OnConflictStrategy.Companion.REPLACE
|
||||
import androidx.room.Query
|
||||
import moe.lava.banksia.room.entity.StopEntity
|
||||
import moe.lava.banksia.core.room.entity.StopEntity
|
||||
|
||||
@Dao
|
||||
interface StopDao {
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
package moe.lava.banksia.room.dao
|
||||
package moe.lava.banksia.core.room.dao
|
||||
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Delete
|
||||
import androidx.room.Insert
|
||||
import androidx.room.OnConflictStrategy.Companion.REPLACE
|
||||
import androidx.room.Query
|
||||
import moe.lava.banksia.room.entity.StopTimeEntity
|
||||
import moe.lava.banksia.core.room.entity.StopTimeEntity
|
||||
|
||||
@Dao
|
||||
interface StopTimeDao {
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
package moe.lava.banksia.room.dao
|
||||
package moe.lava.banksia.core.room.dao
|
||||
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Delete
|
||||
import androidx.room.Insert
|
||||
import androidx.room.OnConflictStrategy.Companion.REPLACE
|
||||
import androidx.room.Query
|
||||
import moe.lava.banksia.room.entity.TripEntity
|
||||
import moe.lava.banksia.core.room.entity.TripEntity
|
||||
|
||||
@Dao
|
||||
interface TripDao {
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
package moe.lava.banksia.room.dao
|
||||
package moe.lava.banksia.core.room.dao
|
||||
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Insert
|
||||
import androidx.room.OnConflictStrategy.Companion.REPLACE
|
||||
import androidx.room.Query
|
||||
import moe.lava.banksia.room.entity.VersionMetadataEntity
|
||||
import moe.lava.banksia.core.room.entity.VersionMetadataEntity
|
||||
|
||||
@Dao
|
||||
interface VersionMetadataDao {
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
package moe.lava.banksia.room.entity
|
||||
package moe.lava.banksia.core.room.entity
|
||||
|
||||
import androidx.room.Entity
|
||||
import androidx.room.PrimaryKey
|
||||
import moe.lava.banksia.model.Route
|
||||
import moe.lava.banksia.model.RouteType
|
||||
import moe.lava.banksia.core.model.Route
|
||||
import moe.lava.banksia.core.model.RouteType
|
||||
|
||||
@Entity("Route")
|
||||
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.Entity
|
||||
import androidx.room.PrimaryKey
|
||||
import kotlinx.datetime.LocalDate
|
||||
import moe.lava.banksia.model.Service
|
||||
import moe.lava.banksia.util.deserialiseDaysBitflag
|
||||
import moe.lava.banksia.util.serialise
|
||||
import moe.lava.banksia.core.model.Service
|
||||
import moe.lava.banksia.core.util.deserialiseDaysBitflag
|
||||
import moe.lava.banksia.core.util.serialise
|
||||
|
||||
@Entity("Service")
|
||||
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.Entity
|
||||
import kotlinx.datetime.LocalDate
|
||||
import moe.lava.banksia.model.ServiceException
|
||||
import moe.lava.banksia.core.model.ServiceException
|
||||
|
||||
@Entity(
|
||||
"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.PrimaryKey
|
||||
import androidx.room.TypeConverters
|
||||
import moe.lava.banksia.model.Shape
|
||||
import moe.lava.banksia.model.ShapePath
|
||||
import moe.lava.banksia.room.converter.ShapePathConverter
|
||||
import moe.lava.banksia.core.model.Shape
|
||||
import moe.lava.banksia.core.model.ShapePath
|
||||
import moe.lava.banksia.core.room.converter.ShapePathConverter
|
||||
|
||||
@Entity("Shape")
|
||||
@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.Entity
|
||||
import androidx.room.ForeignKey
|
||||
import androidx.room.ForeignKey.Companion.SET_NULL
|
||||
import androidx.room.PrimaryKey
|
||||
import moe.lava.banksia.model.Stop
|
||||
import moe.lava.banksia.util.Point
|
||||
import moe.lava.banksia.core.model.Stop
|
||||
import moe.lava.banksia.core.util.Point
|
||||
|
||||
@Entity(
|
||||
"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.ForeignKey
|
||||
import androidx.room.ForeignKey.Companion.CASCADE
|
||||
import androidx.room.Index
|
||||
import kotlinx.serialization.ExperimentalSerializationApi
|
||||
import moe.lava.banksia.model.FutureTime
|
||||
import moe.lava.banksia.model.FutureTime.Companion.asInt
|
||||
import moe.lava.banksia.model.StopTime
|
||||
import moe.lava.banksia.core.model.FutureTime
|
||||
import moe.lava.banksia.core.model.FutureTime.Companion.asInt
|
||||
import moe.lava.banksia.core.model.StopTime
|
||||
|
||||
@Entity(
|
||||
"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.Entity
|
||||
|
|
@ -6,7 +6,7 @@ import androidx.room.ForeignKey
|
|||
import androidx.room.ForeignKey.Companion.CASCADE
|
||||
import androidx.room.Index
|
||||
import androidx.room.PrimaryKey
|
||||
import moe.lava.banksia.model.Trip
|
||||
import moe.lava.banksia.core.model.Trip
|
||||
|
||||
@Entity(
|
||||
"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.PrimaryKey
|
||||
import moe.lava.banksia.model.VersionMetadata
|
||||
import moe.lava.banksia.core.model.VersionMetadata
|
||||
|
||||
@Entity(
|
||||
"VersionMetadata",
|
||||
|
|
@ -1,10 +1,8 @@
|
|||
package moe.lava.banksia.di
|
||||
package moe.lava.banksia.core.room
|
||||
|
||||
import androidx.room.RoomDatabase
|
||||
import moe.lava.banksia.room.Database
|
||||
import org.koin.core.parameter.ParametersHolder
|
||||
import org.koin.core.scope.Scope
|
||||
import org.koin.dsl.module
|
||||
|
||||
class IosDatabaseBuilder() : PlatformDatabaseBuilder {
|
||||
override fun getBuilder(): RoomDatabase.Builder<Database> {
|
||||
|
|
@ -12,7 +10,5 @@ class IosDatabaseBuilder() : PlatformDatabaseBuilder {
|
|||
}
|
||||
}
|
||||
|
||||
actual fun Scope.provideDatabaseBuilder(p: ParametersHolder): PlatformDatabaseBuilder =
|
||||
internal actual fun Scope.provideDatabaseBuilder(p: ParametersHolder): PlatformDatabaseBuilder =
|
||||
IosDatabaseBuilder()
|
||||
|
||||
internal actual val ExtPlatformModule = module { }
|
||||
|
|
@ -1,11 +1,9 @@
|
|||
package moe.lava.banksia.di
|
||||
package moe.lava.banksia.core.room
|
||||
|
||||
import androidx.room.Room
|
||||
import androidx.room.RoomDatabase
|
||||
import moe.lava.banksia.room.Database
|
||||
import org.koin.core.parameter.ParametersHolder
|
||||
import org.koin.core.scope.Scope
|
||||
import org.koin.dsl.module
|
||||
import java.io.File
|
||||
|
||||
class JvmDatabaseBuilder() : PlatformDatabaseBuilder {
|
||||
|
|
@ -17,7 +15,5 @@ class JvmDatabaseBuilder() : PlatformDatabaseBuilder {
|
|||
}
|
||||
}
|
||||
|
||||
actual fun Scope.provideDatabaseBuilder(p: ParametersHolder): PlatformDatabaseBuilder =
|
||||
internal actual fun Scope.provideDatabaseBuilder(p: ParametersHolder): PlatformDatabaseBuilder =
|
||||
JvmDatabaseBuilder()
|
||||
|
||||
internal actual val ExtPlatformModule = module { }
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package moe.lava.banksia.util
|
||||
package moe.lava.banksia.core.util
|
||||
|
||||
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.LocalDate
|
||||
|
|
@ -12,7 +12,7 @@ import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
|
|||
import kotlinx.serialization.descriptors.SerialDescriptor
|
||||
import kotlinx.serialization.encoding.Decoder
|
||||
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)
|
||||
data class FutureTime(
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package moe.lava.banksia.model
|
||||
package moe.lava.banksia.core.model
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package moe.lava.banksia.model
|
||||
package moe.lava.banksia.core.model
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
|
|
@ -15,6 +15,6 @@ enum class RouteType(val value: Int) {
|
|||
;
|
||||
|
||||
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(
|
||||
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.LocalDate
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package moe.lava.banksia.model
|
||||
package moe.lava.banksia.core.model
|
||||
|
||||
import kotlinx.datetime.LocalDate
|
||||
import kotlinx.serialization.Serializable
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package moe.lava.banksia.model
|
||||
package moe.lava.banksia.core.model
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import moe.lava.banksia.util.Point
|
||||
import moe.lava.banksia.core.util.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 moe.lava.banksia.util.Point
|
||||
import moe.lava.banksia.core.util.Point
|
||||
|
||||
@Serializable
|
||||
data class Stop(
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package moe.lava.banksia.model
|
||||
package moe.lava.banksia.core.model
|
||||
|
||||
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.LocalDateTime
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package moe.lava.banksia.model
|
||||
package moe.lava.banksia.core.model
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package moe.lava.banksia.model
|
||||
package moe.lava.banksia.core.model
|
||||
|
||||
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 */
|
||||
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.delay
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package moe.lava.banksia.util
|
||||
package moe.lava.banksia.core.util
|
||||
|
||||
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)
|
||||
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.delay
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package moe.lava.banksia.util
|
||||
package moe.lava.banksia.core.util
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
|
|
@ -16,7 +16,12 @@ import io.ktor.serialization.kotlinx.json.json
|
|||
import kotlinx.coroutines.delay
|
||||
import kotlinx.serialization.Serializable
|
||||
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.PtvDirection
|
||||
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.PtvRun
|
||||
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 kotlin.random.Random
|
||||
|
||||
|
|
@ -2,7 +2,7 @@ package moe.lava.banksia.data.ptv.structures
|
|||
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
import moe.lava.banksia.model.RouteType
|
||||
import moe.lava.banksia.core.model.RouteType
|
||||
|
||||
@Serializable
|
||||
data class PtvRoute(
|
||||
|
|
@ -7,7 +7,7 @@ import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
|
|||
import kotlinx.serialization.descriptors.SerialDescriptor
|
||||
import kotlinx.serialization.encoding.Decoder
|
||||
import kotlinx.serialization.encoding.Encoder
|
||||
import moe.lava.banksia.model.RouteType
|
||||
import moe.lava.banksia.core.model.RouteType
|
||||
|
||||
object PtvRouteTypeSerialiser : KSerializer<PtvRouteType> {
|
||||
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) {
|
||||
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) {
|
||||
println("[$tag] $msg")
|
||||
|
|
@ -19,7 +19,8 @@ kotlin {
|
|||
}
|
||||
|
||||
dependencies {
|
||||
implementation(projects.shared)
|
||||
implementation(projects.core)
|
||||
implementation(projects.core.room)
|
||||
implementation(projects.server.gtfs)
|
||||
implementation(projects.server.gtfsRt)
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ kotlin {
|
|||
}
|
||||
|
||||
dependencies {
|
||||
implementation(projects.shared)
|
||||
implementation(projects.core)
|
||||
implementation(libs.kotlinx.serialization.csv)
|
||||
implementation(libs.kotlinx.datetime)
|
||||
implementation(libs.ktor.client.contentnegotiation)
|
||||
|
|
|
|||
|
|
@ -17,15 +17,16 @@ import kotlinx.datetime.LocalDate
|
|||
import kotlinx.serialization.decodeFromString
|
||||
import kotlinx.serialization.modules.EmptySerializersModule
|
||||
import kotlinx.serialization.serializer
|
||||
import moe.lava.banksia.Constants
|
||||
import moe.lava.banksia.model.Route
|
||||
import moe.lava.banksia.model.RouteType
|
||||
import moe.lava.banksia.model.Service
|
||||
import moe.lava.banksia.model.ServiceException
|
||||
import moe.lava.banksia.model.Shape
|
||||
import moe.lava.banksia.model.Stop
|
||||
import moe.lava.banksia.model.StopTime
|
||||
import moe.lava.banksia.model.Trip
|
||||
import moe.lava.banksia.core.Constants
|
||||
import moe.lava.banksia.core.model.Route
|
||||
import moe.lava.banksia.core.model.RouteType
|
||||
import moe.lava.banksia.core.model.Service
|
||||
import moe.lava.banksia.core.model.ServiceException
|
||||
import moe.lava.banksia.core.model.Shape
|
||||
import moe.lava.banksia.core.model.Stop
|
||||
import moe.lava.banksia.core.model.StopTime
|
||||
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.GtfsService
|
||||
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.GtfsStopTime
|
||||
import moe.lava.banksia.server.gtfs.structures.GtfsTrip
|
||||
import moe.lava.banksia.util.Point
|
||||
import java.io.File
|
||||
import java.util.zip.ZipFile
|
||||
import kotlin.time.ExperimentalTime
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package moe.lava.banksia.server.gtfs.structures
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import moe.lava.banksia.model.FutureTime
|
||||
import moe.lava.banksia.core.model.FutureTime
|
||||
|
||||
@Suppress("PropertyName")
|
||||
@Serializable
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ kotlin {
|
|||
}
|
||||
|
||||
dependencies {
|
||||
implementation(projects.shared)
|
||||
implementation(projects.core)
|
||||
implementation(libs.okio)
|
||||
implementation(libs.koin.core)
|
||||
implementation(libs.ktor.client.core)
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ import kotlinx.coroutines.sync.withLock
|
|||
import kotlinx.coroutines.withContext
|
||||
import kotlinx.datetime.TimeZone
|
||||
import kotlinx.datetime.toLocalDateTime
|
||||
import moe.lava.banksia.util.log
|
||||
import moe.lava.banksia.core.util.log
|
||||
import java.io.File
|
||||
import kotlin.time.Instant
|
||||
|
||||
|
|
|
|||
|
|
@ -15,9 +15,9 @@ import kotlinx.coroutines.flow.MutableSharedFlow
|
|||
import kotlinx.coroutines.flow.SharedFlow
|
||||
import kotlinx.coroutines.joinAll
|
||||
import kotlinx.coroutines.launch
|
||||
import moe.lava.banksia.Constants
|
||||
import moe.lava.banksia.util.LogScope
|
||||
import moe.lava.banksia.util.log
|
||||
import moe.lava.banksia.core.Constants
|
||||
import moe.lava.banksia.core.util.LogScope
|
||||
import moe.lava.banksia.core.util.log
|
||||
|
||||
private val types = arrayOf(
|
||||
"metro/trip-updates",
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package moe.lava.banksia.server.gtfsrt
|
||||
|
||||
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) {
|
||||
private val positions = mutableMapOf<String, Point>()
|
||||
|
|
|
|||
|
|
@ -18,16 +18,15 @@ import kotlinx.coroutines.withContext
|
|||
import kotlinx.datetime.LocalDate
|
||||
import kotlinx.datetime.TimeZone
|
||||
import kotlinx.datetime.todayIn
|
||||
import moe.lava.banksia.Constants
|
||||
import moe.lava.banksia.di.CommonModules
|
||||
import moe.lava.banksia.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.core.Constants
|
||||
import moe.lava.banksia.core.model.atDate
|
||||
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.core.util.serialise
|
||||
import moe.lava.banksia.server.di.ServerModules
|
||||
import moe.lava.banksia.server.gtfsrt.GtfsrtService
|
||||
import moe.lava.banksia.util.serialise
|
||||
import org.koin.dsl.module
|
||||
import org.koin.ktor.ext.inject
|
||||
import org.koin.ktor.plugin.Koin
|
||||
|
|
@ -44,14 +43,12 @@ fun Application.module() {
|
|||
}
|
||||
install(Koin) {
|
||||
modules(module { single { log } })
|
||||
modules(CommonModules, ServerModules)
|
||||
modules(ServerModules)
|
||||
}
|
||||
|
||||
val gtfsr by inject<GtfsrtService>()
|
||||
@Suppress("KotlinConstantConditions")
|
||||
if (!Constants.devMode) {
|
||||
val gtfsr by inject<GtfsrtService>()
|
||||
launch { gtfsr.start(this, true) }
|
||||
}
|
||||
launch { gtfsr.start(this, !Constants.devMode) }
|
||||
|
||||
routing {
|
||||
if (Constants.devMode) {
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
package moe.lava.banksia.server
|
||||
|
||||
import moe.lava.banksia.room.Database
|
||||
import moe.lava.banksia.room.entity.StopEntity
|
||||
import moe.lava.banksia.util.log
|
||||
import moe.lava.banksia.core.room.Database
|
||||
import moe.lava.banksia.core.room.entity.StopEntity
|
||||
import moe.lava.banksia.core.util.log
|
||||
import java.security.MessageDigest
|
||||
|
||||
class GtfsDataFixer(
|
||||
|
|
|
|||
|
|
@ -3,15 +3,15 @@ package moe.lava.banksia.server
|
|||
import androidx.room.immediateTransaction
|
||||
import androidx.room.useWriterConnection
|
||||
import io.ktor.util.logging.Logger
|
||||
import moe.lava.banksia.model.Route
|
||||
import moe.lava.banksia.model.Service
|
||||
import moe.lava.banksia.model.ServiceException
|
||||
import moe.lava.banksia.model.Shape
|
||||
import moe.lava.banksia.model.Stop
|
||||
import moe.lava.banksia.model.StopTime
|
||||
import moe.lava.banksia.model.Trip
|
||||
import moe.lava.banksia.room.Database
|
||||
import moe.lava.banksia.room.entity.asEntity
|
||||
import moe.lava.banksia.core.model.Route
|
||||
import moe.lava.banksia.core.model.Service
|
||||
import moe.lava.banksia.core.model.ServiceException
|
||||
import moe.lava.banksia.core.model.Shape
|
||||
import moe.lava.banksia.core.model.Stop
|
||||
import moe.lava.banksia.core.model.StopTime
|
||||
import moe.lava.banksia.core.model.Trip
|
||||
import moe.lava.banksia.core.room.Database
|
||||
import moe.lava.banksia.core.room.entity.asEntity
|
||||
import moe.lava.banksia.server.gtfs.GtfsData
|
||||
import moe.lava.banksia.server.gtfs.GtfsParser
|
||||
import kotlin.time.Clock
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package moe.lava.banksia.server.di
|
||||
|
||||
import io.ktor.client.HttpClient
|
||||
import moe.lava.banksia.core.room.roomDiModule
|
||||
import moe.lava.banksia.server.GtfsDataFixer
|
||||
import moe.lava.banksia.server.GtfsImporter
|
||||
import moe.lava.banksia.server.gtfs.GtfsParser
|
||||
|
|
@ -9,6 +10,8 @@ import org.koin.core.module.dsl.singleOf
|
|||
import org.koin.dsl.module
|
||||
|
||||
val ServerModules = module {
|
||||
includes(roomDiModule)
|
||||
|
||||
single { HttpClient() }
|
||||
singleOf(::GtfsParser)
|
||||
singleOf(::GtfsrtService)
|
||||
|
|
|
|||
|
|
@ -32,11 +32,12 @@ dependencyResolutionManagement {
|
|||
}
|
||||
|
||||
include(":androidApp")
|
||||
include(":client")
|
||||
include(":server")
|
||||
include(":server:gtfs")
|
||||
include(":server:gtfs_rt")
|
||||
include(":shared")
|
||||
include(":core")
|
||||
include(":core:data")
|
||||
include(":core:room")
|
||||
include(":ui")
|
||||
include(":ui:maps")
|
||||
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.ui.backhandler)
|
||||
|
||||
implementation(projects.client)
|
||||
implementation(projects.shared)
|
||||
implementation(projects.core)
|
||||
implementation(projects.core.data)
|
||||
implementation(projects.ui.maps)
|
||||
implementation(projects.ui.shared)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ kotlin {
|
|||
implementation(libs.compose.material3)
|
||||
implementation(libs.compose.ui)
|
||||
|
||||
implementation(projects.shared)
|
||||
implementation(projects.core)
|
||||
implementation(projects.ui.shared)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import androidx.compose.ui.Modifier
|
|||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.unit.dp
|
||||
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.platform.BanksiaTheme
|
||||
import org.maplibre.compose.camera.CameraPosition
|
||||
|
|
|
|||
|
|
@ -4,11 +4,11 @@ import androidx.compose.foundation.layout.WindowInsets
|
|||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.runtime.Composable
|
||||
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.toPosition
|
||||
import moe.lava.banksia.ui.map.util.Marker
|
||||
import moe.lava.banksia.ui.platform.BanksiaTheme
|
||||
import moe.lava.banksia.util.Point
|
||||
|
||||
internal val MELBOURNE = Point(-37.8136, 144.9631)
|
||||
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