[RF] move userMusicFromList to GameApiController and add GenericUserMusicRepo

This commit is contained in:
Clansty
2025-01-05 19:54:15 +08:00
parent 7083e1a117
commit ccd88a10ab
14 changed files with 42 additions and 18 deletions

View File

@@ -22,6 +22,7 @@ abstract class GameApiController<T : IUserData>(val name: String, userDataClass:
abstract val us: AquaUserServices
abstract val userDataRepo: GenericUserDataRepo<T>
abstract val playlogRepo: GenericPlaylogRepo<*>
abstract val userMusicRepo: GenericUserMusicRepo<*>
abstract val shownRanks: List<Pair<Int, String>>
abstract val settableFields: Map<String, (T, String) -> Unit>
open val gettableFields: Set<String> = setOf()
@@ -133,6 +134,11 @@ abstract class GameApiController<T : IUserData>(val name: String, userDataClass:
}
}
@API("user-music-from-list")
suspend fun userMusicFromList(@RP username: Str, @RB musicList: List<Int>) = us.cardByName(username) { card ->
userMusicRepo.findByUser_Card_ExtIdAndMusicIdIn(card.extId, musicList)
}
fun genericUserSummary(card: Card, ratingComp: Map<String, String>, rival: Boolean? = null): GenericGameSummary {
// Summary values: total plays, player rating, server-wide ranking
// number of each rank, max combo, number of full combo, number of all perfect

View File

@@ -107,6 +107,10 @@ interface IGenericGamePlaylog {
val isAllPerfect: Boolean
}
interface IGenericUserMusic {
val musicId: Int
}
@MappedSuperclass
open class BaseEntity(
@Id
@@ -132,4 +136,10 @@ interface GenericPlaylogRepo<T: IGenericGamePlaylog> : JpaRepository<T, Long> {
fun findByUserCardExtId(extId: Long, page: Pageable): Page<T>
}
@NoRepositoryBean
interface GenericUserMusicRepo<T: IGenericUserMusic> : JpaRepository<T, Long> {
fun findByUserCardExtId(extId: Long): List<T>
fun findByUser_Card_ExtIdAndMusicIdIn(userId: Long, musicId: List<Int>): List<T>
}
data class ImportResult(val errors: List<String>, val warnings: List<String>, val json: String)

View File

@@ -14,6 +14,7 @@ class Chusan(
override val us: AquaUserServices,
override val playlogRepo: Chu3UserPlaylogRepo,
override val userDataRepo: Chu3UserDataRepo,
override val userMusicRepo: Chu3UserMusicDetailRepo,
val rp: Chu3Repos
): GameApiController<Chu3UserData>("chu3", Chu3UserData::class) {
override suspend fun trend(@RP username: Str): List<TrendOut> = us.cardByName(username) { card ->

View File

@@ -16,6 +16,7 @@ class Maimai2(
override val us: AquaUserServices,
override val playlogRepo: Mai2UserPlaylogRepo,
override val userDataRepo: Mai2UserDataRepo,
override val userMusicRepo: Mai2UserMusicDetailRepo,
val repos: Mai2Repos,
) : GameApiController<Mai2UserDetail>("mai2", Mai2UserDetail::class) {
override suspend fun trend(@RP username: Str): List<TrendOut> = us.cardByName(username) { card ->
@@ -99,11 +100,6 @@ class Maimai2(
repos.userFavorite.findByUser_Card_ExtId(card.extId)
}
@API("user-music-from-list")
suspend fun userMusicFromList(@RP username: Str, @RB musicList: List<Int>) = us.cardByName(username) { card ->
repos.userMusicDetail.findByUser_Card_ExtIdAndMusicIdIn(card.extId, musicList)
}
@PostMapping("change-name")
suspend fun changeName(@RP token: String, @RP newName: String) = us.jwt.auth(token) { u ->
val newNameFull = toFullWidth(newName)

View File

@@ -6,6 +6,7 @@ import icu.samnyan.aqua.net.games.*
import icu.samnyan.aqua.net.utils.*
import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserDataRepository
import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserGeneralDataRepository
import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserMusicDetailRepository
import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserPlaylogRepository
import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData
import org.springframework.web.bind.annotation.RestController
@@ -16,6 +17,7 @@ class Ongeki(
override val us: AquaUserServices,
override val playlogRepo: UserPlaylogRepository,
override val userDataRepo: UserDataRepository,
override val userMusicRepo: UserMusicDetailRepository,
val userGeneralDataRepository: UserGeneralDataRepository
): GameApiController<UserData>("ongeki", UserData::class) {
override suspend fun trend(username: String) = us.cardByName(username) { card ->

View File

@@ -5,6 +5,7 @@ import icu.samnyan.aqua.net.db.AquaUserServices
import icu.samnyan.aqua.net.games.*
import icu.samnyan.aqua.net.utils.waccaScores
import icu.samnyan.aqua.sega.wacca.model.db.WaccaUser
import icu.samnyan.aqua.sega.wacca.model.db.WcUserBestScoreRepo
import icu.samnyan.aqua.sega.wacca.model.db.WcUserPlayLogRepo
import icu.samnyan.aqua.sega.wacca.model.db.WcUserRepo
import org.springframework.web.bind.annotation.RestController
@@ -15,6 +16,7 @@ class Wacca(
override val us: AquaUserServices,
override val playlogRepo: WcUserPlayLogRepo,
override val userDataRepo: WcUserRepo,
override val userMusicRepo: WcUserBestScoreRepo,
): GameApiController<WaccaUser>("wacca", WaccaUser::class) {
override val settableFields: Map<String, (WaccaUser, String) -> Unit> by lazy { mapOf(
"userName" to usernameCheck(WACCA_USERNAME_CHARS),