diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiRepos.kt b/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiRepos.kt index bf1c947b..c447f501 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiRepos.kt +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiRepos.kt @@ -1,59 +1,26 @@ @file:Suppress("FunctionName") package icu.samnyan.aqua.sega.ongeki -import icu.samnyan.aqua.sega.ongeki.model.gamedata.* import icu.samnyan.aqua.net.games.GenericPlaylogRepo import icu.samnyan.aqua.net.games.GenericUserDataRepo import icu.samnyan.aqua.net.games.GenericUserMusicRepo -import icu.samnyan.aqua.sega.general.model.Card +import icu.samnyan.aqua.net.games.IUserRepo +import icu.samnyan.aqua.sega.ongeki.model.gamedata.* import icu.samnyan.aqua.sega.ongeki.model.userdata.* -import jakarta.transaction.Transactional import org.springframework.data.domain.Page import org.springframework.data.domain.Pageable import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Query +import org.springframework.data.repository.NoRepositoryBean import org.springframework.stereotype.Repository import java.util.* -@Repository("OngekiUserActivityRepository") -interface UserActivityRepository : JpaRepository { - fun findByUser_Card_ExtId(userId: Long): List - fun findByUserAndKindAndActivityId(userData: UserData, kind: Int, activityId: Int): Optional - - fun findByUser_Card_ExtIdAndKindOrderBySortNumberDesc(userId: Long, kind: Int): List -} - -@Repository("OngekiUserBossRepository") -interface UserBossRepository : JpaRepository { - fun findByUser_Card_ExtId(userId: Long): List - - fun findByUserAndMusicId(user: UserData, musicId: Int): Optional -} - -@Repository("OngekiUserCardRepository") -interface UserCardRepository : JpaRepository { - fun findByUserAndCardId(userData: UserData, cardId: Int): Optional - - fun findByUser_Card_ExtId(userId: Long): List - - fun findByUser_Card_ExtId(userId: Long, page: Pageable): Page -} - -@Repository("OngekiUserChapterRepository") -interface UserChapterRepository : JpaRepository { - fun findByUser_Card_ExtId(userId: Long): List - - fun findByUserAndChapterId(userData: UserData, chapterId: Int): Optional -} - -@Repository("OngekiUserCharacterRepository") -interface UserCharacterRepository : JpaRepository { - fun findByUser_Card_ExtId(userId: Long): List - - fun findByUser_Card_ExtId(userId: Long, page: Pageable): Page - - fun findByUserAndCharacterId(userData: UserData, characterId: Int): Optional +@NoRepositoryBean +interface OngekiUserLinked : IUserRepo { + fun findByUser_Card_ExtId(extId: Long): List + fun findSingleByUser_Card_ExtId(extId: Long): Optional + fun findByUser_Card_ExtId(extId: Long, pageable: Pageable): Page } @Repository("OngekiUserDataRepository") @@ -61,17 +28,39 @@ interface UserDataRepository : GenericUserDataRepo { fun findByCard_ExtIdIn(userIds: Collection): List } -@Repository("OngekiUserDeckRepository") -interface UserDeckRepository : JpaRepository { - fun findByUser_Card_ExtId(userId: Long): List +@Repository("OngekiUserActivityRepository") +interface UserActivityRepository : OngekiUserLinked { + fun findByUserAndKindAndActivityId(userData: UserData, kind: Int, activityId: Int): Optional + fun findByUser_Card_ExtIdAndKindOrderBySortNumberDesc(userId: Long, kind: Int): List +} +@Repository("OngekiUserBossRepository") +interface UserBossRepository : OngekiUserLinked { + fun findByUserAndMusicId(user: UserData, musicId: Int): Optional +} + +@Repository("OngekiUserCardRepository") +interface UserCardRepository : OngekiUserLinked { + fun findByUserAndCardId(userData: UserData, cardId: Int): Optional +} + +@Repository("OngekiUserChapterRepository") +interface UserChapterRepository : OngekiUserLinked { + fun findByUserAndChapterId(userData: UserData, chapterId: Int): Optional +} + +@Repository("OngekiUserCharacterRepository") +interface UserCharacterRepository : OngekiUserLinked { + fun findByUserAndCharacterId(userData: UserData, characterId: Int): Optional +} + +@Repository("OngekiUserDeckRepository") +interface UserDeckRepository : OngekiUserLinked { fun findByUserAndDeckId(userData: UserData, deckId: Int): Optional } @Repository("OngekiUserEventMusicRepository") -interface UserEventMusicRepository : JpaRepository { - fun findByUser_Card_ExtId(userId: Long): List - +interface UserEventMusicRepository : OngekiUserLinked { fun findByUserAndEventIdAndTypeAndMusicId( userData: UserData, eventId: Int, @@ -81,9 +70,7 @@ interface UserEventMusicRepository : JpaRepository { } @Repository("OngekiUserEventPointRepository") -interface UserEventPointRepository : JpaRepository { - fun findByUser_Card_ExtId(userId: Long): List - +interface UserEventPointRepository : OngekiUserLinked { fun findByUserAndEventId(userData: UserData, eventId: Int): Optional //@Query(value = "SELECT rank from (SELECT user_id , DENSE_RANK() OVER (ORDER BY point DESC) as rank from ongeki_user_event_point where event_id = :eventId) where user_id == :userId limit 1", nativeQuery = true) @@ -92,122 +79,79 @@ interface UserEventPointRepository : JpaRepository { } @Repository("OngekiUserGeneralDataRepository") -interface UserGeneralDataRepository : JpaRepository { - fun findByUser_Card_ExtId(userId: Long): List - +interface UserGeneralDataRepository : OngekiUserLinked { fun findByUserAndPropertyKey(user: UserData, key: String): Optional fun findByUser_Card_ExtIdAndPropertyKey(userId: Long, key: String): Optional } @Repository("OngekiUserItemRepository") -interface UserItemRepository : JpaRepository { - fun findByUser_Card_ExtId(userId: Long): List - - fun findByUser_Card_ExtId(userId: Long, page: Pageable): Page - +interface UserItemRepository : OngekiUserLinked { fun findByUserAndItemKindAndItemId(userData: UserData, itemKind: Int, itemId: Int): Optional fun findByUser_Card_ExtIdAndItemKind(userId: Long, kind: Int, page: Pageable): Page } @Repository("OngekiUserKopRepository") -interface UserKopRepository : JpaRepository { - fun findByUser_Card_ExtId(userId: Long): List - +interface UserKopRepository : OngekiUserLinked { fun findByUserAndKopIdAndAreaId(userData: UserData, kopId: Int, areaId: Int): Optional } -interface UserLoginBonusRepository : JpaRepository { - fun findByUser_Card_ExtId(userId: Long): List - +interface UserLoginBonusRepository : OngekiUserLinked { fun findByUserAndBonusId(userData: UserData, bonusId: Int): Optional } @Repository("OngekiUserMemoryChapterRepository") -interface UserMemoryChapterRepository : JpaRepository { - fun findByUser_Card_ExtId(userId: Long): List - +interface UserMemoryChapterRepository : OngekiUserLinked { fun findByUserAndChapterId(userData: UserData, chapterId: Int): Optional } @Repository("OngekiUserMissionPointRepository") -interface UserMissionPointRepository : JpaRepository { - fun findByUser_Card_ExtId(userId: Long): List - +interface UserMissionPointRepository : OngekiUserLinked { fun findByUserAndEventId(userData: UserData, eventId: Int): Optional } @Repository("OngekiUserMusicDetailRepository") -interface UserMusicDetailRepository : JpaRepository, - GenericUserMusicRepo { - fun findByUser_Card_ExtId(userId: Long): List - - fun findByUser_Card_ExtId(userId: Long, page: Pageable): Page - +interface UserMusicDetailRepository : OngekiUserLinked, GenericUserMusicRepo { fun findByUserAndMusicIdAndLevel(userData: UserData, musicId: Int, level: Int): Optional } @Repository("OngekiUserMusicItemRepository") -interface UserMusicItemRepository : JpaRepository { - fun findByUser_Card_ExtId(aimeId: Long): List - - fun findByUser_Card_ExtId(userId: Long, page: Pageable): Page - +interface UserMusicItemRepository : OngekiUserLinked { fun findByUserAndMusicId(userData: UserData, musicId: Int): Optional } @Repository("OngekiUserOptionRepository") -interface UserOptionRepository : JpaRepository { - fun findByUser(userData: UserData): Optional - - fun findByUser_Card_ExtId(userId: Long): Optional -} +interface UserOptionRepository : OngekiUserLinked @Repository("OngekiUserPlaylogRepository") -interface UserPlaylogRepository : GenericPlaylogRepo { - fun findByUser_Card_ExtId(userId: Long): List - - fun findByUser_Card_ExtId(userId: Long, page: Pageable): Page -} +interface UserPlaylogRepository : OngekiUserLinked, GenericPlaylogRepo @Repository("OngekiUserRivalDataRepository") -interface UserRivalDataRepository : JpaRepository { - fun findByUser_Card_ExtId(userId: Long): List -} +interface UserRivalDataRepository : OngekiUserLinked @Repository("OngekiUserScenarioRepository") -interface UserScenarioRepository : JpaRepository { - fun findByUser_Card_ExtId(userId: Long): List - +interface UserScenarioRepository : OngekiUserLinked { fun findByUserAndScenarioId(user: UserData, scenarioId: Int): Optional } @Repository("OngekiUserStoryRepository") -interface UserStoryRepository : JpaRepository { - fun findByUser_Card_ExtId(userId: Long): List - +interface UserStoryRepository : OngekiUserLinked { fun findByUserAndStoryId(userData: UserData, storyId: Int): Optional } @Repository("OngekiUserTechCountRepository") -interface UserTechCountRepository : JpaRepository { - fun findByUser_Card_ExtId(userId: Long): List - +interface UserTechCountRepository : OngekiUserLinked { fun findByUserAndLevelId(user: UserData, levelId: Int): Optional } @Repository("OngekiUserTechEventRepository") -interface UserTechEventRepository : JpaRepository { - fun findByUser_Card_ExtId(userId: Long): List - +interface UserTechEventRepository : OngekiUserLinked { fun findByUserAndEventId(userData: UserData, eventId: Int): Optional } @Repository("OngekiUserTradeItemRepository") -interface UserTradeItemRepository : JpaRepository { - fun findByUser_Card_ExtId(userId: Long): List - +interface UserTradeItemRepository : OngekiUserLinked { fun findByUser_Card_ExtIdAndChapterIdGreaterThanEqualAndChapterIdLessThanEqual( userId: Long, startChapterId: Int, @@ -222,10 +166,8 @@ interface UserTradeItemRepository : JpaRepository { } @Repository("OngekiUserTrainingRoomRepository") -interface UserTrainingRoomRepository : JpaRepository { +interface UserTrainingRoomRepository : OngekiUserLinked { fun findByUserAndRoomId(user: UserData, roomId: Int): Optional - - fun findByUser_Card_ExtId(userId: Long): List } diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserOptionHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserOptionHandler.java index cf1b0dea..c924fea0 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserOptionHandler.java +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserOptionHandler.java @@ -37,7 +37,7 @@ public class GetUserOptionHandler implements BaseHandler { public String handle(Map request) throws JsonProcessingException { long userId = ((Number) request.get("userId")).longValue(); - Optional userOptionOptional = userOptionRepository.findByUser_Card_ExtId(userId); + Optional userOptionOptional = userOptionRepository.findSingleByUser_Card_ExtId(userId); Map resultMap = new LinkedHashMap<>(); resultMap.put("userId", userId); diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserPreviewHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserPreviewHandler.java index 2c2e0074..7e452586 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserPreviewHandler.java +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserPreviewHandler.java @@ -81,7 +81,7 @@ public class GetUserPreviewHandler implements BaseHandler { resp.setDispRating(1); resp.setDispBP(1); resp.setHeadphone(0); - userOptionRepository.findByUser(user).ifPresent(x -> { + userOptionRepository.findSingleByUser(user).ifPresent(x -> { resp.setDispPlayerLv(x.getDispPlayerLv()); resp.setDispRating(x.getDispRating()); resp.setDispBP(x.getDispBP()); diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/UpsertUserAllHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/UpsertUserAllHandler.java index 570af834..6634d329 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/UpsertUserAllHandler.java +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/UpsertUserAllHandler.java @@ -134,7 +134,7 @@ public class UpsertUserAllHandler implements BaseHandler { // UserOption UserOption newUserOption = upsertUserAll.getUserOption().get(0); - Optional userOptionOptional = userOptionRepository.findByUser(newUserData); + Optional userOptionOptional = userOptionRepository.findSingleByUser(newUserData); UserOption userOption = userOptionOptional.orElseGet(() -> new UserOption(newUserData)); newUserOption.setId(userOption.getId());