feat(server/gtfs): use transaction for imports

This commit is contained in:
Cilly Leang 2026-04-01 17:00:35 +11:00
parent b568ed547a
commit 91d4fe25a6
Signed by: cilly
GPG key ID: 6500251E087653C9
2 changed files with 22 additions and 31 deletions

View file

@ -132,21 +132,6 @@ fun Application.module() {
routeDao.stops(routeId) routeDao.stops(routeId)
} }
call.respond(stops.map { it.asModel() }) call.respond(stops.map { it.asModel() })
// val stops = withContext(Dispatchers.IO) {
// val stopDao by inject<StopDao>()
// val stopTimeDao by inject<StopTimeDao>()
// val tripDao by inject<TripDao>()
//
// 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}") { get("/stoptimes/by_stop/{stop_id}") {
val stopId = call.parameters["stop_id"]!! val stopId = call.parameters["stop_id"]!!

View file

@ -1,5 +1,7 @@
package moe.lava.banksia.server package moe.lava.banksia.server
import androidx.room.immediateTransaction
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.model.Route
import moe.lava.banksia.model.Service import moe.lava.banksia.model.Service
@ -19,6 +21,8 @@ class GtfsImporter(
private val log: Logger, private val log: Logger,
) { ) {
suspend fun import(url: String, date: Long = Clock.System.now().epochSeconds) { suspend fun import(url: String, date: Long = Clock.System.now().epochSeconds) {
database.useWriterConnection { transactor ->
transactor.immediateTransaction {
database.routeDao.deleteAll() database.routeDao.deleteAll()
database.serviceDao.deleteAll() database.serviceDao.deleteAll()
database.shapeDao.deleteAll() database.shapeDao.deleteAll()
@ -39,6 +43,8 @@ class GtfsImporter(
updateMetadata(date) updateMetadata(date)
} }
}
}
private suspend fun updateMetadata(date: Long) { private suspend fun updateMetadata(date: Long) {
val dao = database.versionMetadataDao val dao = database.versionMetadataDao