[O] Ongeki: Generalize user repos

pull/134/head
Azalea 2025-03-26 17:40:36 -04:00
parent fdfdf66fa3
commit 73281d1316
4 changed files with 57 additions and 115 deletions

View File

@ -1,59 +1,26 @@
@file:Suppress("FunctionName") @file:Suppress("FunctionName")
package icu.samnyan.aqua.sega.ongeki 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.GenericPlaylogRepo
import icu.samnyan.aqua.net.games.GenericUserDataRepo import icu.samnyan.aqua.net.games.GenericUserDataRepo
import icu.samnyan.aqua.net.games.GenericUserMusicRepo 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 icu.samnyan.aqua.sega.ongeki.model.userdata.*
import jakarta.transaction.Transactional
import org.springframework.data.domain.Page import org.springframework.data.domain.Page
import org.springframework.data.domain.Pageable import org.springframework.data.domain.Pageable
import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.JpaRepository
import org.springframework.data.jpa.repository.Query import org.springframework.data.jpa.repository.Query
import org.springframework.data.repository.NoRepositoryBean
import org.springframework.stereotype.Repository import org.springframework.stereotype.Repository
import java.util.* import java.util.*
@Repository("OngekiUserActivityRepository")
interface UserActivityRepository : JpaRepository<UserActivity, Long> {
fun findByUser_Card_ExtId(userId: Long): List<UserActivity>
fun findByUserAndKindAndActivityId(userData: UserData, kind: Int, activityId: Int): Optional<UserActivity> @NoRepositoryBean
interface OngekiUserLinked<T> : IUserRepo<UserData, T> {
fun findByUser_Card_ExtIdAndKindOrderBySortNumberDesc(userId: Long, kind: Int): List<UserActivity> fun findByUser_Card_ExtId(extId: Long): List<T>
} fun findSingleByUser_Card_ExtId(extId: Long): Optional<T>
fun findByUser_Card_ExtId(extId: Long, pageable: Pageable): Page<T>
@Repository("OngekiUserBossRepository")
interface UserBossRepository : JpaRepository<UserBoss, Long> {
fun findByUser_Card_ExtId(userId: Long): List<UserBoss>
fun findByUserAndMusicId(user: UserData, musicId: Int): Optional<UserBoss>
}
@Repository("OngekiUserCardRepository")
interface UserCardRepository : JpaRepository<UserCard, Long> {
fun findByUserAndCardId(userData: UserData, cardId: Int): Optional<UserCard>
fun findByUser_Card_ExtId(userId: Long): List<UserCard>
fun findByUser_Card_ExtId(userId: Long, page: Pageable): Page<UserCard>
}
@Repository("OngekiUserChapterRepository")
interface UserChapterRepository : JpaRepository<UserChapter, Long> {
fun findByUser_Card_ExtId(userId: Long): List<UserChapter>
fun findByUserAndChapterId(userData: UserData, chapterId: Int): Optional<UserChapter>
}
@Repository("OngekiUserCharacterRepository")
interface UserCharacterRepository : JpaRepository<UserCharacter, Long> {
fun findByUser_Card_ExtId(userId: Long): List<UserCharacter>
fun findByUser_Card_ExtId(userId: Long, page: Pageable): Page<UserCharacter>
fun findByUserAndCharacterId(userData: UserData, characterId: Int): Optional<UserCharacter>
} }
@Repository("OngekiUserDataRepository") @Repository("OngekiUserDataRepository")
@ -61,17 +28,39 @@ interface UserDataRepository : GenericUserDataRepo<UserData> {
fun findByCard_ExtIdIn(userIds: Collection<Long>): List<UserData> fun findByCard_ExtIdIn(userIds: Collection<Long>): List<UserData>
} }
@Repository("OngekiUserDeckRepository") @Repository("OngekiUserActivityRepository")
interface UserDeckRepository : JpaRepository<UserDeck, Long> { interface UserActivityRepository : OngekiUserLinked<UserActivity> {
fun findByUser_Card_ExtId(userId: Long): List<UserDeck> fun findByUserAndKindAndActivityId(userData: UserData, kind: Int, activityId: Int): Optional<UserActivity>
fun findByUser_Card_ExtIdAndKindOrderBySortNumberDesc(userId: Long, kind: Int): List<UserActivity>
}
@Repository("OngekiUserBossRepository")
interface UserBossRepository : OngekiUserLinked<UserBoss> {
fun findByUserAndMusicId(user: UserData, musicId: Int): Optional<UserBoss>
}
@Repository("OngekiUserCardRepository")
interface UserCardRepository : OngekiUserLinked<UserCard> {
fun findByUserAndCardId(userData: UserData, cardId: Int): Optional<UserCard>
}
@Repository("OngekiUserChapterRepository")
interface UserChapterRepository : OngekiUserLinked<UserChapter> {
fun findByUserAndChapterId(userData: UserData, chapterId: Int): Optional<UserChapter>
}
@Repository("OngekiUserCharacterRepository")
interface UserCharacterRepository : OngekiUserLinked<UserCharacter> {
fun findByUserAndCharacterId(userData: UserData, characterId: Int): Optional<UserCharacter>
}
@Repository("OngekiUserDeckRepository")
interface UserDeckRepository : OngekiUserLinked<UserDeck> {
fun findByUserAndDeckId(userData: UserData, deckId: Int): Optional<UserDeck> fun findByUserAndDeckId(userData: UserData, deckId: Int): Optional<UserDeck>
} }
@Repository("OngekiUserEventMusicRepository") @Repository("OngekiUserEventMusicRepository")
interface UserEventMusicRepository : JpaRepository<UserEventMusic, Long> { interface UserEventMusicRepository : OngekiUserLinked<UserEventMusic> {
fun findByUser_Card_ExtId(userId: Long): List<UserEventMusic>
fun findByUserAndEventIdAndTypeAndMusicId( fun findByUserAndEventIdAndTypeAndMusicId(
userData: UserData, userData: UserData,
eventId: Int, eventId: Int,
@ -81,9 +70,7 @@ interface UserEventMusicRepository : JpaRepository<UserEventMusic, Long> {
} }
@Repository("OngekiUserEventPointRepository") @Repository("OngekiUserEventPointRepository")
interface UserEventPointRepository : JpaRepository<UserEventPoint, Long> { interface UserEventPointRepository : OngekiUserLinked<UserEventPoint> {
fun findByUser_Card_ExtId(userId: Long): List<UserEventPoint>
fun findByUserAndEventId(userData: UserData, eventId: Int): Optional<UserEventPoint> fun findByUserAndEventId(userData: UserData, eventId: Int): Optional<UserEventPoint>
//@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) //@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<UserEventPoint, Long> {
} }
@Repository("OngekiUserGeneralDataRepository") @Repository("OngekiUserGeneralDataRepository")
interface UserGeneralDataRepository : JpaRepository<UserGeneralData, Long> { interface UserGeneralDataRepository : OngekiUserLinked<UserGeneralData> {
fun findByUser_Card_ExtId(userId: Long): List<UserGeneralData>
fun findByUserAndPropertyKey(user: UserData, key: String): Optional<UserGeneralData> fun findByUserAndPropertyKey(user: UserData, key: String): Optional<UserGeneralData>
fun findByUser_Card_ExtIdAndPropertyKey(userId: Long, key: String): Optional<UserGeneralData> fun findByUser_Card_ExtIdAndPropertyKey(userId: Long, key: String): Optional<UserGeneralData>
} }
@Repository("OngekiUserItemRepository") @Repository("OngekiUserItemRepository")
interface UserItemRepository : JpaRepository<UserItem, Long> { interface UserItemRepository : OngekiUserLinked<UserItem> {
fun findByUser_Card_ExtId(userId: Long): List<UserItem>
fun findByUser_Card_ExtId(userId: Long, page: Pageable): Page<UserItem>
fun findByUserAndItemKindAndItemId(userData: UserData, itemKind: Int, itemId: Int): Optional<UserItem> fun findByUserAndItemKindAndItemId(userData: UserData, itemKind: Int, itemId: Int): Optional<UserItem>
fun findByUser_Card_ExtIdAndItemKind(userId: Long, kind: Int, page: Pageable): Page<UserItem> fun findByUser_Card_ExtIdAndItemKind(userId: Long, kind: Int, page: Pageable): Page<UserItem>
} }
@Repository("OngekiUserKopRepository") @Repository("OngekiUserKopRepository")
interface UserKopRepository : JpaRepository<UserKop, Long> { interface UserKopRepository : OngekiUserLinked<UserKop> {
fun findByUser_Card_ExtId(userId: Long): List<UserKop>
fun findByUserAndKopIdAndAreaId(userData: UserData, kopId: Int, areaId: Int): Optional<UserKop> fun findByUserAndKopIdAndAreaId(userData: UserData, kopId: Int, areaId: Int): Optional<UserKop>
} }
interface UserLoginBonusRepository : JpaRepository<UserLoginBonus, Long> { interface UserLoginBonusRepository : OngekiUserLinked<UserLoginBonus> {
fun findByUser_Card_ExtId(userId: Long): List<UserLoginBonus>
fun findByUserAndBonusId(userData: UserData, bonusId: Int): Optional<UserLoginBonus> fun findByUserAndBonusId(userData: UserData, bonusId: Int): Optional<UserLoginBonus>
} }
@Repository("OngekiUserMemoryChapterRepository") @Repository("OngekiUserMemoryChapterRepository")
interface UserMemoryChapterRepository : JpaRepository<UserMemoryChapter, Long> { interface UserMemoryChapterRepository : OngekiUserLinked<UserMemoryChapter> {
fun findByUser_Card_ExtId(userId: Long): List<UserMemoryChapter>
fun findByUserAndChapterId(userData: UserData, chapterId: Int): Optional<UserMemoryChapter> fun findByUserAndChapterId(userData: UserData, chapterId: Int): Optional<UserMemoryChapter>
} }
@Repository("OngekiUserMissionPointRepository") @Repository("OngekiUserMissionPointRepository")
interface UserMissionPointRepository : JpaRepository<UserMissionPoint, Long> { interface UserMissionPointRepository : OngekiUserLinked<UserMissionPoint> {
fun findByUser_Card_ExtId(userId: Long): List<UserMissionPoint>
fun findByUserAndEventId(userData: UserData, eventId: Int): Optional<UserMissionPoint> fun findByUserAndEventId(userData: UserData, eventId: Int): Optional<UserMissionPoint>
} }
@Repository("OngekiUserMusicDetailRepository") @Repository("OngekiUserMusicDetailRepository")
interface UserMusicDetailRepository : JpaRepository<UserMusicDetail, Long>, interface UserMusicDetailRepository : OngekiUserLinked<UserMusicDetail>, GenericUserMusicRepo<UserMusicDetail> {
GenericUserMusicRepo<UserMusicDetail> {
fun findByUser_Card_ExtId(userId: Long): List<UserMusicDetail>
fun findByUser_Card_ExtId(userId: Long, page: Pageable): Page<UserMusicDetail>
fun findByUserAndMusicIdAndLevel(userData: UserData, musicId: Int, level: Int): Optional<UserMusicDetail> fun findByUserAndMusicIdAndLevel(userData: UserData, musicId: Int, level: Int): Optional<UserMusicDetail>
} }
@Repository("OngekiUserMusicItemRepository") @Repository("OngekiUserMusicItemRepository")
interface UserMusicItemRepository : JpaRepository<UserMusicItem, Long> { interface UserMusicItemRepository : OngekiUserLinked<UserMusicItem> {
fun findByUser_Card_ExtId(aimeId: Long): List<UserMusicItem>
fun findByUser_Card_ExtId(userId: Long, page: Pageable): Page<UserMusicItem>
fun findByUserAndMusicId(userData: UserData, musicId: Int): Optional<UserMusicItem> fun findByUserAndMusicId(userData: UserData, musicId: Int): Optional<UserMusicItem>
} }
@Repository("OngekiUserOptionRepository") @Repository("OngekiUserOptionRepository")
interface UserOptionRepository : JpaRepository<UserOption, Long> { interface UserOptionRepository : OngekiUserLinked<UserOption>
fun findByUser(userData: UserData): Optional<UserOption>
fun findByUser_Card_ExtId(userId: Long): Optional<UserOption>
}
@Repository("OngekiUserPlaylogRepository") @Repository("OngekiUserPlaylogRepository")
interface UserPlaylogRepository : GenericPlaylogRepo<UserPlaylog> { interface UserPlaylogRepository : OngekiUserLinked<UserPlaylog>, GenericPlaylogRepo<UserPlaylog>
fun findByUser_Card_ExtId(userId: Long): List<UserPlaylog>
fun findByUser_Card_ExtId(userId: Long, page: Pageable): Page<UserPlaylog>
}
@Repository("OngekiUserRivalDataRepository") @Repository("OngekiUserRivalDataRepository")
interface UserRivalDataRepository : JpaRepository<UserRival, Long> { interface UserRivalDataRepository : OngekiUserLinked<UserRival>
fun findByUser_Card_ExtId(userId: Long): List<UserRival>
}
@Repository("OngekiUserScenarioRepository") @Repository("OngekiUserScenarioRepository")
interface UserScenarioRepository : JpaRepository<UserScenario, Long> { interface UserScenarioRepository : OngekiUserLinked<UserScenario> {
fun findByUser_Card_ExtId(userId: Long): List<UserScenario>
fun findByUserAndScenarioId(user: UserData, scenarioId: Int): Optional<UserScenario> fun findByUserAndScenarioId(user: UserData, scenarioId: Int): Optional<UserScenario>
} }
@Repository("OngekiUserStoryRepository") @Repository("OngekiUserStoryRepository")
interface UserStoryRepository : JpaRepository<UserStory, Long> { interface UserStoryRepository : OngekiUserLinked<UserStory> {
fun findByUser_Card_ExtId(userId: Long): List<UserStory>
fun findByUserAndStoryId(userData: UserData, storyId: Int): Optional<UserStory> fun findByUserAndStoryId(userData: UserData, storyId: Int): Optional<UserStory>
} }
@Repository("OngekiUserTechCountRepository") @Repository("OngekiUserTechCountRepository")
interface UserTechCountRepository : JpaRepository<UserTechCount, Long> { interface UserTechCountRepository : OngekiUserLinked<UserTechCount> {
fun findByUser_Card_ExtId(userId: Long): List<UserTechCount>
fun findByUserAndLevelId(user: UserData, levelId: Int): Optional<UserTechCount> fun findByUserAndLevelId(user: UserData, levelId: Int): Optional<UserTechCount>
} }
@Repository("OngekiUserTechEventRepository") @Repository("OngekiUserTechEventRepository")
interface UserTechEventRepository : JpaRepository<UserTechEvent, Long> { interface UserTechEventRepository : OngekiUserLinked<UserTechEvent> {
fun findByUser_Card_ExtId(userId: Long): List<UserTechEvent>
fun findByUserAndEventId(userData: UserData, eventId: Int): Optional<UserTechEvent> fun findByUserAndEventId(userData: UserData, eventId: Int): Optional<UserTechEvent>
} }
@Repository("OngekiUserTradeItemRepository") @Repository("OngekiUserTradeItemRepository")
interface UserTradeItemRepository : JpaRepository<UserTradeItem, Long> { interface UserTradeItemRepository : OngekiUserLinked<UserTradeItem> {
fun findByUser_Card_ExtId(userId: Long): List<UserTradeItem>
fun findByUser_Card_ExtIdAndChapterIdGreaterThanEqualAndChapterIdLessThanEqual( fun findByUser_Card_ExtIdAndChapterIdGreaterThanEqualAndChapterIdLessThanEqual(
userId: Long, userId: Long,
startChapterId: Int, startChapterId: Int,
@ -222,10 +166,8 @@ interface UserTradeItemRepository : JpaRepository<UserTradeItem, Long> {
} }
@Repository("OngekiUserTrainingRoomRepository") @Repository("OngekiUserTrainingRoomRepository")
interface UserTrainingRoomRepository : JpaRepository<UserTrainingRoom, Long> { interface UserTrainingRoomRepository : OngekiUserLinked<UserTrainingRoom> {
fun findByUserAndRoomId(user: UserData, roomId: Int): Optional<UserTrainingRoom> fun findByUserAndRoomId(user: UserData, roomId: Int): Optional<UserTrainingRoom>
fun findByUser_Card_ExtId(userId: Long): List<UserTrainingRoom>
} }

View File

@ -37,7 +37,7 @@ public class GetUserOptionHandler implements BaseHandler {
public String handle(Map<String, ?> request) throws JsonProcessingException { public String handle(Map<String, ?> request) throws JsonProcessingException {
long userId = ((Number) request.get("userId")).longValue(); long userId = ((Number) request.get("userId")).longValue();
Optional<UserOption> userOptionOptional = userOptionRepository.findByUser_Card_ExtId(userId); Optional<UserOption> userOptionOptional = userOptionRepository.findSingleByUser_Card_ExtId(userId);
Map<String, Object> resultMap = new LinkedHashMap<>(); Map<String, Object> resultMap = new LinkedHashMap<>();
resultMap.put("userId", userId); resultMap.put("userId", userId);

View File

@ -81,7 +81,7 @@ public class GetUserPreviewHandler implements BaseHandler {
resp.setDispRating(1); resp.setDispRating(1);
resp.setDispBP(1); resp.setDispBP(1);
resp.setHeadphone(0); resp.setHeadphone(0);
userOptionRepository.findByUser(user).ifPresent(x -> { userOptionRepository.findSingleByUser(user).ifPresent(x -> {
resp.setDispPlayerLv(x.getDispPlayerLv()); resp.setDispPlayerLv(x.getDispPlayerLv());
resp.setDispRating(x.getDispRating()); resp.setDispRating(x.getDispRating());
resp.setDispBP(x.getDispBP()); resp.setDispBP(x.getDispBP());

View File

@ -134,7 +134,7 @@ public class UpsertUserAllHandler implements BaseHandler {
// UserOption // UserOption
UserOption newUserOption = upsertUserAll.getUserOption().get(0); UserOption newUserOption = upsertUserAll.getUserOption().get(0);
Optional<UserOption> userOptionOptional = userOptionRepository.findByUser(newUserData); Optional<UserOption> userOptionOptional = userOptionRepository.findSingleByUser(newUserData);
UserOption userOption = userOptionOptional.orElseGet(() -> new UserOption(newUserData)); UserOption userOption = userOptionOptional.orElseGet(() -> new UserOption(newUserData));
newUserOption.setId(userOption.getId()); newUserOption.setId(userOption.getId());