diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/Chu3VersionHelper.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/Chu3VersionHelper.kt new file mode 100644 index 00000000..8feb52cf --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/Chu3VersionHelper.kt @@ -0,0 +1,28 @@ +package icu.samnyan.aqua.sega.chusan + +import ext.logger +import icu.samnyan.aqua.sega.chusan.model.Chu3Repos +import org.springframework.stereotype.Component + + +@Component +class Chu3VersionHelper(val db: Chu3Repos) { + val log = logger() + + // Cache of + val cache: MutableMap = mutableMapOf() + + // Obtain the cabinet's most recent version + operator fun get(clientId: String): String { + // Try to find the version in the cache + cache[clientId]?.let { return it } + + // Not found, check the most recent user + return db.userData.findTopByLastClientIdOrderByLastPlayDateDesc(clientId)?.lastDataVersion + ?.also { cache[clientId] = it } ?: "2.25.13".also { log.warn("No version found for $clientId") } + } + + operator fun set(clientId: String, version: String) { + cache[clientId] = version + } +} \ No newline at end of file