diff --git a/server/src/main/kotlin/moe/lava/banksia/server/Application.kt b/server/src/main/kotlin/moe/lava/banksia/server/Application.kt index b33fb9d..cfbb026 100644 --- a/server/src/main/kotlin/moe/lava/banksia/server/Application.kt +++ b/server/src/main/kotlin/moe/lava/banksia/server/Application.kt @@ -132,21 +132,6 @@ fun Application.module() { routeDao.stops(routeId) } call.respond(stops.map { it.asModel() }) -// val stops = withContext(Dispatchers.IO) { -// val stopDao by inject() -// val stopTimeDao by inject() -// val tripDao by inject() -// -// tripDao.getByRoute(routeId) -// .map { it.id } -// .let { stopTimeDao.get(it) } -// .flatMap { it.asModel().stopInfos } -// .map { it.stopId } -// .let { stopDao.get(it) } -// .map { it.asModel() } -// } -// call.respond(stops) - } get("/stoptimes/by_stop/{stop_id}") { val stopId = call.parameters["stop_id"]!! diff --git a/server/src/main/kotlin/moe/lava/banksia/server/GtfsImporter.kt b/server/src/main/kotlin/moe/lava/banksia/server/GtfsImporter.kt index 794e8de..9a18108 100644 --- a/server/src/main/kotlin/moe/lava/banksia/server/GtfsImporter.kt +++ b/server/src/main/kotlin/moe/lava/banksia/server/GtfsImporter.kt @@ -1,5 +1,7 @@ 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 @@ -19,25 +21,29 @@ class GtfsImporter( private val log: Logger, ) { suspend fun import(url: String, date: Long = Clock.System.now().epochSeconds) { - database.routeDao.deleteAll() - database.serviceDao.deleteAll() - database.shapeDao.deleteAll() - database.stopDao.deleteAll() - database.stopTimeDao.deleteAll() - database.tripDao.deleteAll() + database.useWriterConnection { transactor -> + transactor.immediateTransaction { + database.routeDao.deleteAll() + database.serviceDao.deleteAll() + database.shapeDao.deleteAll() + database.stopDao.deleteAll() + database.stopTimeDao.deleteAll() + database.tripDao.deleteAll() - parser.update(url).collect { chunk -> - when (chunk) { - is GtfsData.RouteChunk -> addRoutes(chunk.routes) - is GtfsData.ServiceChunk -> addServices(chunk.services) - is GtfsData.ShapeChunk -> addShapes(chunk.shapes) - is GtfsData.StopChunk -> addStops(chunk.stops) - is GtfsData.StopTimeChunk -> addStopTimes(chunk.stopTimes) - is GtfsData.TripChunk -> addTrips(chunk.trips) + parser.update(url).collect { chunk -> + when (chunk) { + is GtfsData.RouteChunk -> addRoutes(chunk.routes) + is GtfsData.ServiceChunk -> addServices(chunk.services) + is GtfsData.ShapeChunk -> addShapes(chunk.shapes) + is GtfsData.StopChunk -> addStops(chunk.stops) + is GtfsData.StopTimeChunk -> addStopTimes(chunk.stopTimes) + is GtfsData.TripChunk -> addTrips(chunk.trips) + } + } + + updateMetadata(date) } } - - updateMetadata(date) } private suspend fun updateMetadata(date: Long) {