feat: basic departures support
also a huge refactor to simplify modules
This commit is contained in:
parent
b31067992d
commit
8b3016004b
44 changed files with 627 additions and 211 deletions
|
|
@ -20,7 +20,9 @@ kotlin {
|
|||
|
||||
dependencies {
|
||||
implementation(projects.core)
|
||||
implementation(projects.core.data)
|
||||
implementation(projects.core.sqld)
|
||||
implementation(projects.core.stoptime)
|
||||
implementation(projects.server.gtfs)
|
||||
implementation(projects.server.gtfsRt)
|
||||
|
||||
|
|
|
|||
|
|
@ -15,22 +15,16 @@ import io.ktor.server.routing.routing
|
|||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import kotlinx.datetime.LocalDate
|
||||
import kotlinx.datetime.TimeZone
|
||||
import kotlinx.datetime.todayIn
|
||||
import moe.lava.banksia.core.Constants
|
||||
import moe.lava.banksia.core.model.atDate
|
||||
import moe.lava.banksia.core.sqld.RouteQueries
|
||||
import moe.lava.banksia.core.sqld.StopQueries
|
||||
import moe.lava.banksia.core.sqld.StopTimeQueries
|
||||
import moe.lava.banksia.core.sqld.mappers.asModel
|
||||
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.server.routes.stopTimeRoutes
|
||||
import org.koin.dsl.module
|
||||
import org.koin.ktor.ext.get
|
||||
import org.koin.ktor.plugin.Koin
|
||||
import kotlin.time.Clock
|
||||
|
||||
fun main() {
|
||||
if (System.getenv("BANKSIA_PRODUCTION") == "1") Constants.devMode = false
|
||||
|
|
@ -53,6 +47,8 @@ fun Application.module() {
|
|||
launch { get<GtfsrtService>().start(this, !Constants.devMode) }
|
||||
|
||||
routing {
|
||||
stopTimeRoutes()
|
||||
|
||||
if (Constants.devMode) {
|
||||
get("/fixup") {
|
||||
call.respondText("received")
|
||||
|
|
@ -137,23 +133,5 @@ fun Application.module() {
|
|||
}
|
||||
call.respond(stops.map { it.asModel() })
|
||||
}
|
||||
get("/stoptimes/by_stop/{stop_id}") {
|
||||
val stopId = call.parameters["stop_id"]!!
|
||||
val date = call.queryParameters["date"]
|
||||
?.let { LocalDate.parse(it, LocalDate.Formats.ISO) }
|
||||
?: Clock.System.todayIn(TimeZone.currentSystemDefault())
|
||||
val times = withContext(context = Dispatchers.IO) {
|
||||
get<StopTimeQueries>()
|
||||
.getForStopDated(
|
||||
listOf(date.dayOfWeek).serialise().toLong(),
|
||||
date.toEpochDays(),
|
||||
stopId,
|
||||
)
|
||||
.executeAsList()
|
||||
.map { it.asModel().atDate(date) }
|
||||
.sortedBy { it.time.departure }
|
||||
}
|
||||
call.respond(times)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package moe.lava.banksia.server.di
|
||||
|
||||
import io.ktor.client.HttpClient
|
||||
import moe.lava.banksia.core.sqld.sqldDiModule
|
||||
import moe.lava.banksia.core.data.dataDiModule
|
||||
import moe.lava.banksia.server.GtfsDataFixer
|
||||
import moe.lava.banksia.server.GtfsImporter
|
||||
import moe.lava.banksia.server.gtfs.GtfsParser
|
||||
|
|
@ -11,7 +11,7 @@ import org.koin.core.module.dsl.singleOf
|
|||
import org.koin.dsl.module
|
||||
|
||||
val ServerModules = module {
|
||||
includes(sqldDiModule)
|
||||
includes(dataDiModule)
|
||||
|
||||
single { HttpClient() }
|
||||
singleOf(::GtfsParser)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue