diff --git a/archive/src/main/kotlin/org/openrs2/archive/cache/CacheExporter.kt b/archive/src/main/kotlin/org/openrs2/archive/cache/CacheExporter.kt index 2ba30504..cc3c969e 100644 --- a/archive/src/main/kotlin/org/openrs2/archive/cache/CacheExporter.kt +++ b/archive/src/main/kotlin/org/openrs2/archive/cache/CacheExporter.kt @@ -199,6 +199,25 @@ public class CacheExporter @Inject constructor( val key: XteaKey ) + public suspend fun totalSize(): Long { + return database.execute { connection -> + connection.prepareStatement( + """ + SELECT SUM(size) + FROM cache_stats + """.trimIndent() + ).use { stmt -> + stmt.executeQuery().use { rows -> + if (rows.next()) { + rows.getLong(1) + } else { + 0 + } + } + } + } + } + public suspend fun list(): List { return database.execute { connection -> connection.prepareStatement( diff --git a/archive/src/main/kotlin/org/openrs2/archive/web/CachesController.kt b/archive/src/main/kotlin/org/openrs2/archive/web/CachesController.kt index 20f5478b..e835895e 100644 --- a/archive/src/main/kotlin/org/openrs2/archive/web/CachesController.kt +++ b/archive/src/main/kotlin/org/openrs2/archive/web/CachesController.kt @@ -50,7 +50,15 @@ public class CachesController @Inject constructor( public suspend fun index(call: ApplicationCall) { val caches = exporter.list() - call.respond(ThymeleafContent("caches/index.html", mapOf("caches" to caches))) + val totalSize = exporter.totalSize() + call.respond( + ThymeleafContent( + "caches/index.html", mapOf( + "caches" to caches, + "totalSize" to totalSize + ) + ) + ) } public suspend fun indexJson(call: ApplicationCall) { diff --git a/archive/src/main/resources/org/openrs2/archive/templates/caches/index.html b/archive/src/main/resources/org/openrs2/archive/templates/caches/index.html index 71745246..188a8126 100644 --- a/archive/src/main/resources/org/openrs2/archive/templates/caches/index.html +++ b/archive/src/main/resources/org/openrs2/archive/templates/caches/index.html @@ -110,6 +110,10 @@ +

+ The total size of all caches in the archive is + 0 B. +

1 Map squares in the middle of the sea are unreachable by normal players, making it impossible to