From d71af941b0e52b5481b27029acdc836e1ea40a6e Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Thu, 2 Jan 2025 10:44:06 -0500 Subject: [PATCH] [+] Add some get-only fields --- src/main/java/icu/samnyan/aqua/net/games/GameApiController.kt | 4 +++- src/main/java/icu/samnyan/aqua/net/games/chu3/Chusan.kt | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/icu/samnyan/aqua/net/games/GameApiController.kt b/src/main/java/icu/samnyan/aqua/net/games/GameApiController.kt index 59152ba2..fae5e98e 100644 --- a/src/main/java/icu/samnyan/aqua/net/games/GameApiController.kt +++ b/src/main/java/icu/samnyan/aqua/net/games/GameApiController.kt @@ -24,6 +24,7 @@ abstract class GameApiController(val name: String, userDataClass: abstract val playlogRepo: GenericPlaylogRepo<*> abstract val shownRanks: List> abstract val settableFields: Map Unit> + open val gettableFields: Set = setOf() @API("trend") abstract suspend fun trend(@RP username: String): List @@ -110,7 +111,8 @@ abstract class GameApiController(val name: String, userDataClass: fun playlog(@RP id: Long): IGenericGamePlaylog = playlogRepo.findById(id).getOrNull() ?: (404 - "Playlog not found") val userDetailFields by lazy { userDataClass.gettersMap().let { vm -> - settableFields.map { (k, _) -> k to (vm[k] ?: error("Field $k not found")) }.toMap() + (settableFields.keys.toSet() + gettableFields) + .associateWith { k -> (vm[k] ?: error("Field $k not found")) } } } @API("user-detail") diff --git a/src/main/java/icu/samnyan/aqua/net/games/chu3/Chusan.kt b/src/main/java/icu/samnyan/aqua/net/games/chu3/Chusan.kt index a72fc24c..7f84e917 100644 --- a/src/main/java/icu/samnyan/aqua/net/games/chu3/Chusan.kt +++ b/src/main/java/icu/samnyan/aqua/net/games/chu3/Chusan.kt @@ -38,6 +38,7 @@ class Chusan( "avatarFront" to { u, v -> u.avatarFront = v.int }, "avatarBack" to { u, v -> u.avatarBack = v.int }, ) } + override val gettableFields: Set = setOf("level", "playerRating") override suspend fun userSummary(@RP username: Str, @RP token: String?) = us.cardByName(username) { card -> // Summary values: total plays, player rating, server-wide ranking