diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/Maimai2New.kt b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/Maimai2New.kt index c70e9339..a12d81e2 100644 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/Maimai2New.kt +++ b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/Maimai2New.kt @@ -58,8 +58,7 @@ class Maimai2New( return mapOf( "name" to user, "plays" to plays.size, - "serverRank" to userDataRepository.findPlayerRatingByOrderByPlayerRating() - .binarySearch(user.playerRating) + 1, + "serverRank" to userDataRepository.getRanking(user.playerRating), "accuracy" to plays.sumOf { it.achievement } / plays.size, "rating" to user.playerRating, "ratingHighest" to user.highestRating, diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai2/dao/userdata/UserDataRepository.java b/src/main/java/icu/samnyan/aqua/sega/maimai2/dao/userdata/UserDataRepository.java index eaee414b..cd02a529 100644 --- a/src/main/java/icu/samnyan/aqua/sega/maimai2/dao/userdata/UserDataRepository.java +++ b/src/main/java/icu/samnyan/aqua/sega/maimai2/dao/userdata/UserDataRepository.java @@ -3,6 +3,7 @@ package icu.samnyan.aqua.sega.maimai2.dao.userdata; import icu.samnyan.aqua.sega.general.model.Card; import icu.samnyan.aqua.sega.maimai2.model.userdata.UserDetail; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; @@ -22,5 +23,6 @@ public interface UserDataRepository extends JpaRepository { @Transactional void deleteByCard(Card card); - List findPlayerRatingByOrderByPlayerRating(); + @Query("select count(*) from Maimai2UserData where playerRating > :rating") + Integer getRanking(int rating); } diff --git a/src/main/resources/db/migration/mariadb/V251_1__maimai2_index.sql b/src/main/resources/db/migration/mariadb/V251_1__maimai2_index.sql new file mode 100644 index 00000000..dcbde2c9 --- /dev/null +++ b/src/main/resources/db/migration/mariadb/V251_1__maimai2_index.sql @@ -0,0 +1 @@ +CREATE INDEX idx_player_rating ON maimai2_user_detail(player_rating); diff --git a/src/main/resources/db/migration/mysql/V251_1__maimai2_index.sql b/src/main/resources/db/migration/mysql/V251_1__maimai2_index.sql new file mode 100644 index 00000000..dcbde2c9 --- /dev/null +++ b/src/main/resources/db/migration/mysql/V251_1__maimai2_index.sql @@ -0,0 +1 @@ +CREATE INDEX idx_player_rating ON maimai2_user_detail(player_rating); diff --git a/src/main/resources/db/migration/sqlite/V251_1__maimai2_index.sql b/src/main/resources/db/migration/sqlite/V251_1__maimai2_index.sql new file mode 100644 index 00000000..dcbde2c9 --- /dev/null +++ b/src/main/resources/db/migration/sqlite/V251_1__maimai2_index.sql @@ -0,0 +1 @@ +CREATE INDEX idx_player_rating ON maimai2_user_detail(player_rating);