[O] Ongeki: User unpaged apis

This commit is contained in:
Azalea
2025-03-26 21:45:13 -04:00
parent a2b27090db
commit 654cda736d
27 changed files with 90 additions and 1290 deletions

View File

@@ -25,6 +25,7 @@ typealias SpecialHandler = RequestContext.() -> Any?
fun BaseHandler.toSpecial() = { ctx: RequestContext -> handle(ctx.data) }
typealias PagedHandler = RequestContext.() -> List<Any>
typealias PagedExtraHandler = RequestContext.() -> Pair<List<Any>, JDict>
typealias AddFn = RequestContext.() -> PagedProcessor
typealias PagePost = (MutJDict) -> Unit
data class PagedProcessor(val add: JDict?, val fn: PagedHandler, var post: PagePost? = null)
@@ -75,4 +76,21 @@ abstract class MeowApi(val serialize: (String, Any) -> String) {
val minTime = millis() - (1000 * 60)
pageCache.entries.removeIf { it.value.l < minTime }
}
// Used because maimai and ongeki does not actually require paging implementation
fun String.unpaged(key: String? = null, fn: PagedHandler) {
val k = key ?: (this.replace("Get", "").firstCharLower() + "List")
this {
val l = fn(this)
mapOf("userId" to uid, "nextIndex" to 0, "length" to l.size, k to l)
}
}
fun String.unpagedExtra(key: String? = null, fn: PagedExtraHandler) {
val k = key ?: (this.replace("Get", "").firstCharLower() + "List")
this {
val (l, e) = fn(this)
mapOf("userId" to uid, "nextIndex" to 0, "length" to l.size, k to l) + e
}
}
}