diff --git a/server/gtfs_rt/src/main/kotlin/moe/lava/banksia/server/gtfsrt/GtfsrtArchiver.kt b/server/gtfs_rt/src/main/kotlin/moe/lava/banksia/server/gtfsrt/GtfsrtArchiver.kt index 7b9229b..aaee0a9 100644 --- a/server/gtfs_rt/src/main/kotlin/moe/lava/banksia/server/gtfsrt/GtfsrtArchiver.kt +++ b/server/gtfs_rt/src/main/kotlin/moe/lava/banksia/server/gtfsrt/GtfsrtArchiver.kt @@ -41,13 +41,19 @@ internal class GtfsrtArchiver { val time = Instant.fromEpochSeconds(timestamp).toLocalDateTime(TimeZone.currentSystemDefault()) + val (prevWeek, prevDay) = (time.dayOfYear - 1) / 7 to (time.dayOfYear - 1) % 7 + val (nextWeek, nextDay) = time.dayOfYear / 7 to time.dayOfYear % 7 + val base = File(BASE_DIR, type) - val previousParent = File(base, "${time.year}-${((time.dayOfYear - 1) / 7).toString().padStart(2, '0')}") - val currentParent = File(base, "${time.year}-${((time.dayOfYear - 1) / 7 + 1).toString().padStart(2, '0')}") + val previousParent = File(base, "${time.year}-${prevWeek.toString().padStart(2, '0')}/${prevDay}") + val currentParent = File(base, "${time.year}-${nextWeek.toString().padStart(2, '0')}/${nextDay}") val target = File(currentParent, "${timestamp}.proto") if (previousParent.isDirectory) { enqueueCompression(previousParent) + if (prevWeek != nextWeek) { + enqueueCompression(previousParent.parentFile) + } } if (!target.exists()) { @@ -90,6 +96,7 @@ internal class GtfsrtArchiver { ).start() val exitCode = proc.waitFor() if (exitCode == 0) { + log("CompressJob", "Compressed ${next.absolutePath} to ${next.absolutePath}.tar.zst") if (next.deleteRecursively()) { cmut.withLock { cqueue.remove(next) } } else {