From d3665d64a667f5133c96c054ff80c0d99dc177b0 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Sun, 3 Mar 2024 17:46:40 -0500 Subject: [PATCH] [+] Default game endpoint --- .../java/icu/samnyan/aqua/net/CardController.kt | 16 ++++++++++++---- .../icu/samnyan/aqua/net/utils/GameHelper.kt | 2 +- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/main/java/icu/samnyan/aqua/net/CardController.kt b/src/main/java/icu/samnyan/aqua/net/CardController.kt index c4c819bf..9022a12e 100644 --- a/src/main/java/icu/samnyan/aqua/net/CardController.kt +++ b/src/main/java/icu/samnyan/aqua/net/CardController.kt @@ -2,6 +2,7 @@ package icu.samnyan.aqua.net import ext.* import icu.samnyan.aqua.net.components.JWT +import icu.samnyan.aqua.net.db.AquaUserServices import icu.samnyan.aqua.net.utils.AquaNetProps import icu.samnyan.aqua.net.utils.GenericUserDataRepo import icu.samnyan.aqua.net.utils.IGenericUserData @@ -17,6 +18,7 @@ import kotlin.jvm.optionals.getOrNull @API("/api/v2/card") class CardController( val jwt: JWT, + val us: AquaUserServices, val cardService: CardService, val cardGameService: CardGameService, val cardRepository: CardRepository, @@ -94,6 +96,12 @@ class CardController( SUCCESS } + + @API("/default-game") + @Doc("Get the default game for the card.", "Game ID") + suspend fun defaultGame(@RP username: Str) = us.cardByName(username) { card -> + cardGameService.getSummary(card).filterValues { it != null }.keys.firstOrNull() + } } /** @@ -140,8 +148,8 @@ class CardGameService( // An easy migration is to change the UserData card field to the user's ghost card games.forEach { game -> when (game) { - "maimai2" -> migrateCard(maimai2, crd) - "chusan" -> migrateCard(chusan, crd) + "mai2" -> migrateCard(maimai2, crd) + "chu3" -> migrateCard(chusan, crd) "ongeki" -> migrateCard(ongeki, crd) // TODO: diva // "diva" -> diva.findByPdId(card.extId.toInt()).getOrNull()?.let { @@ -152,8 +160,8 @@ class CardGameService( } suspend fun getSummary(card: Card) = async { mapOf( - "maimai2" to getSummaryFor(maimai2, card), - "chusan" to getSummaryFor(chusan, card), + "mai2" to getSummaryFor(maimai2, card), + "chu3" to getSummaryFor(chusan, card), "ongeki" to getSummaryFor(ongeki, card), "diva" to diva.findByPdId(card.extId.toInt()).getOrNull()?.let { mapOf( diff --git a/src/main/java/icu/samnyan/aqua/net/utils/GameHelper.kt b/src/main/java/icu/samnyan/aqua/net/utils/GameHelper.kt index 9118141e..ca2ec3f4 100644 --- a/src/main/java/icu/samnyan/aqua/net/utils/GameHelper.kt +++ b/src/main/java/icu/samnyan/aqua/net/utils/GameHelper.kt @@ -92,7 +92,7 @@ fun genericUserSummary( ): GenericGameSummary { // Summary values: total plays, player rating, server-wide ranking // number of each rank, max combo, number of full combo, number of all perfect - val user = userDataRepo.findByCard(card) ?: (404 - "User not found") + val user = userDataRepo.findByCard(card) ?: (404 - "Game data not found") val plays = userPlaylogRepo.findByUserCardExtId(card.extId) // O(6n) ranks algorithm: Loop through the entire list of plays,