From c87889ba41afec075ce3f2f4863d0d5d4ea66794 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Thu, 1 May 2025 20:54:27 -0400 Subject: [PATCH] [+] Music popularity api --- src/main/java/icu/samnyan/aqua/net/db/AquaNetUser.kt | 4 +++- .../java/icu/samnyan/aqua/net/games/GameApiController.kt | 3 +++ .../icu/samnyan/aqua/sega/general/GameMusicPopularity.kt | 7 ++++--- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/icu/samnyan/aqua/net/db/AquaNetUser.kt b/src/main/java/icu/samnyan/aqua/net/db/AquaNetUser.kt index 5c2f7a2b..70ff544c 100644 --- a/src/main/java/icu/samnyan/aqua/net/db/AquaNetUser.kt +++ b/src/main/java/icu/samnyan/aqua/net/db/AquaNetUser.kt @@ -6,6 +6,7 @@ import icu.samnyan.aqua.net.components.JWT import icu.samnyan.aqua.sega.allnet.AllNetProps import icu.samnyan.aqua.sega.allnet.KeyChipRepo import icu.samnyan.aqua.sega.allnet.KeychipSession +import icu.samnyan.aqua.sega.general.GameMusicPopularity import icu.samnyan.aqua.sega.general.dao.CardRepository import icu.samnyan.aqua.sega.general.model.Card import jakarta.persistence.* @@ -117,7 +118,8 @@ class AquaUserServices( val keyChipRepo: KeyChipRepo, val allNetProps: AllNetProps, val jwt: JWT, - val em: EntityManager + val em: EntityManager, + val pop: GameMusicPopularity ) { companion object { val SETTING_FIELDS = AquaUserServices::class.functions 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 bd775e9c..0b281ec2 100644 --- a/src/main/java/icu/samnyan/aqua/net/games/GameApiController.kt +++ b/src/main/java/icu/samnyan/aqua/net/games/GameApiController.kt @@ -226,4 +226,7 @@ abstract class GameApiController(val name: String, userDataClass: recommendedMusic = data logger.info("Recommender updated with ${data.size} users") } + + @API("song-pop") + fun songPopRanking() = us.pop.ranking[name] } diff --git a/src/main/java/icu/samnyan/aqua/sega/general/GameMusicPopularity.kt b/src/main/java/icu/samnyan/aqua/sega/general/GameMusicPopularity.kt index d77c21e5..e241cbad 100644 --- a/src/main/java/icu/samnyan/aqua/sega/general/GameMusicPopularity.kt +++ b/src/main/java/icu/samnyan/aqua/sega/general/GameMusicPopularity.kt @@ -2,12 +2,13 @@ package icu.samnyan.aqua.sega.general import ext.* import icu.samnyan.aqua.net.db.AquaUserServices +import jakarta.persistence.EntityManager import org.springframework.scheduling.annotation.Scheduled import org.springframework.stereotype.Component import java.time.LocalDate @Component -class GameMusicPopularity(val us: AquaUserServices) { +class GameMusicPopularity(val em: EntityManager) { companion object { val log = logger() @@ -23,8 +24,8 @@ class GameMusicPopularity(val us: AquaUserServices) { // Get the play count of each music in the last N days val after = LocalDate.now().minusDays(LOOK_BACK_DAYS).isoDate() - ranking = ls("chusan", "ongeki").associateWith { game -> - us.em.createNativeQuery(""" + ranking = ls("maimai2", "chusan", "ongeki", "wacca").associateWith { game -> + em.createNativeQuery(""" SELECT music_id, count(user_id) as count FROM ${game}_user_playlog_view WHERE user_play_date >= '${after}'