From ecf91763a64508c29e268b582bb1ac1b1e61ee36 Mon Sep 17 00:00:00 2001 From: shenjiayi Date: Wed, 26 Aug 2020 15:52:48 +0800 Subject: [PATCH 1/5] [ongeki] fix chapter jewel not saved --- .../sega/ongeki/model/userdata/UserStory.java | 8 +++++ .../V24__fix_ongeki_user_story_table.sql | 5 +++ .../V24__fix_ongeki_user_story_table.sql | 36 +++++++++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 src/main/resources/db/migration/mysql/V24__fix_ongeki_user_story_table.sql create mode 100644 src/main/resources/db/migration/sqlite/V24__fix_ongeki_user_story_table.sql diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserStory.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserStory.java index 41a2c4e..32a1c9c 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserStory.java +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserStory.java @@ -34,6 +34,14 @@ public class UserStory implements Serializable { private int lastChapterId; + private int jewelCount; + + private int lastPlayMusicId; + + private int lastPlayMusicCategory; + + private int lastPlayMusicLevel; + public UserStory(UserData userData) { this.user = userData; } diff --git a/src/main/resources/db/migration/mysql/V24__fix_ongeki_user_story_table.sql b/src/main/resources/db/migration/mysql/V24__fix_ongeki_user_story_table.sql new file mode 100644 index 0000000..86178ef --- /dev/null +++ b/src/main/resources/db/migration/mysql/V24__fix_ongeki_user_story_table.sql @@ -0,0 +1,5 @@ +ALTER TABLE `ongeki_user_story` + ADD COLUMN `jewel_count` int(11), + ADD COLUMN `last_play_music_id` int(11), + ADD COLUMN `last_play_music_category` int(11), + ADD COLUMN `last_play_music_level` int(11); diff --git a/src/main/resources/db/migration/sqlite/V24__fix_ongeki_user_story_table.sql b/src/main/resources/db/migration/sqlite/V24__fix_ongeki_user_story_table.sql new file mode 100644 index 0000000..fa6e1a8 --- /dev/null +++ b/src/main/resources/db/migration/sqlite/V24__fix_ongeki_user_story_table.sql @@ -0,0 +1,36 @@ +PRAGMA foreign_keys = 0; + +CREATE TABLE ongeki_user_story_new ( + id INTEGER, + last_chapter_id INTEGER NOT NULL, + story_id INTEGER NOT NULL, + jewel_count INTEGER, + last_play_music_id INTEGER, + last_play_music_category INTEGER, + last_play_music_level INTEGER, + user_id BIGINT REFERENCES ongeki_user_data (id) ON DELETE CASCADE, + PRIMARY KEY ( + id + ), + CONSTRAINT ongeki_user_story_uq UNIQUE ( + story_id, + user_id + ) ON CONFLICT REPLACE +); + +INSERT INTO ongeki_user_story_new ( + id, + last_chapter_id, + story_id, + user_id +) +SELECT id, + last_chapter_id, + story_id, + user_id +FROM ongeki_user_story; + +ALTER TABLE ongeki_user_story RENAME TO bak_ongeki_user_story; +ALTER TABLE ongeki_user_story_new RENAME TO ongeki_user_story; + +PRAGMA foreign_keys = 1; From b51452175e264e335f15d09904dae9b7807dc12e Mon Sep 17 00:00:00 2001 From: shenjiayi Date: Tue, 8 Sep 2020 19:07:31 +0800 Subject: [PATCH 2/5] [ongeki] add migration v24 default value --- .../mysql/V24__fix_ongeki_user_story_table.sql | 8 ++++---- .../sqlite/V24__fix_ongeki_user_story_table.sql | 12 ++++++++++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/main/resources/db/migration/mysql/V24__fix_ongeki_user_story_table.sql b/src/main/resources/db/migration/mysql/V24__fix_ongeki_user_story_table.sql index 86178ef..b9f4e1c 100644 --- a/src/main/resources/db/migration/mysql/V24__fix_ongeki_user_story_table.sql +++ b/src/main/resources/db/migration/mysql/V24__fix_ongeki_user_story_table.sql @@ -1,5 +1,5 @@ ALTER TABLE `ongeki_user_story` - ADD COLUMN `jewel_count` int(11), - ADD COLUMN `last_play_music_id` int(11), - ADD COLUMN `last_play_music_category` int(11), - ADD COLUMN `last_play_music_level` int(11); + ADD COLUMN `jewel_count` int(11) DEFAULT 0, + ADD COLUMN `last_play_music_id` int(11) DEFAULT 0, + ADD COLUMN `last_play_music_category` int(11) DEFAULT 0, + ADD COLUMN `last_play_music_level` int(11) DEFAULT 0; diff --git a/src/main/resources/db/migration/sqlite/V24__fix_ongeki_user_story_table.sql b/src/main/resources/db/migration/sqlite/V24__fix_ongeki_user_story_table.sql index fa6e1a8..64ed977 100644 --- a/src/main/resources/db/migration/sqlite/V24__fix_ongeki_user_story_table.sql +++ b/src/main/resources/db/migration/sqlite/V24__fix_ongeki_user_story_table.sql @@ -22,12 +22,20 @@ INSERT INTO ongeki_user_story_new ( id, last_chapter_id, story_id, - user_id + user_id, + jewel_count, + last_play_music_id, + last_play_music_category, + last_play_music_level ) SELECT id, last_chapter_id, story_id, - user_id + user_id, + 0, + 0, + 0, + 0 FROM ongeki_user_story; ALTER TABLE ongeki_user_story RENAME TO bak_ongeki_user_story; From 51cfa629aef98ded4780ef50aa104d297c4d7f6c Mon Sep 17 00:00:00 2001 From: shenjiayi Date: Wed, 9 Sep 2020 00:25:49 +0800 Subject: [PATCH 3/5] [ongeki] complete getUserStoryApi --- .../ongeki/handler/impl/GetUserStoryHandler.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserStoryHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserStoryHandler.java index 8c2a89b..c2db999 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserStoryHandler.java +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserStoryHandler.java @@ -1,7 +1,9 @@ package icu.samnyan.aqua.sega.ongeki.handler.impl; import com.fasterxml.jackson.core.JsonProcessingException; +import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserStoryRepository; import icu.samnyan.aqua.sega.ongeki.handler.BaseHandler; +import icu.samnyan.aqua.sega.ongeki.model.userdata.UserStory; import icu.samnyan.aqua.sega.util.jackson.BasicMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -22,9 +24,12 @@ public class GetUserStoryHandler implements BaseHandler { private final BasicMapper mapper; + private final UserStoryRepository userStoryRepository; + @Autowired - public GetUserStoryHandler(BasicMapper mapper) { + public GetUserStoryHandler(BasicMapper mapper, UserStoryRepository userStoryRepository) { this.mapper = mapper; + this.userStoryRepository = userStoryRepository; } @@ -32,10 +37,12 @@ public class GetUserStoryHandler implements BaseHandler { public String handle(Map request) throws JsonProcessingException { Integer userId = (Integer) request.get("userId"); + List userStoryList = userStoryRepository.findByUser_Card_ExtId(userId); + Map resultMap = new LinkedHashMap<>(); resultMap.put("userId", userId); - resultMap.put("length", 0); - resultMap.put("userStoryList", new List[]{}); + resultMap.put("length", userStoryList.size()); + resultMap.put("userStoryList", userStoryList); String json = mapper.write(resultMap); From d2bc566a1644d0a6751631d2cf83ef0795f17c80 Mon Sep 17 00:00:00 2001 From: shenjiayi Date: Wed, 9 Sep 2020 00:34:47 +0800 Subject: [PATCH 4/5] [ongeki] complete choKaikaApi --- .../ongeki/ApiOngekiPlayerDataController.java | 57 +++++++++++-------- 1 file changed, 32 insertions(+), 25 deletions(-) diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/ongeki/ApiOngekiPlayerDataController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/ongeki/ApiOngekiPlayerDataController.java index 99a4521..be12af0 100644 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/ongeki/ApiOngekiPlayerDataController.java +++ b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/ongeki/ApiOngekiPlayerDataController.java @@ -124,12 +124,13 @@ public class ApiOngekiPlayerDataController { public ReducedPageResponse getCard(@RequestParam Integer aimeId, @RequestParam(required = false, defaultValue = "0") int page, @RequestParam(required = false, defaultValue = "10") int size) { - Page cards = userCardRepository.findByUser_Card_ExtId(aimeId, PageRequest.of(page,size, Sort.Direction.DESC, "id")); + Page cards = userCardRepository.findByUser_Card_ExtId(aimeId, PageRequest.of(page, size, Sort.Direction.DESC, "id")); return new ReducedPageResponse<>(cards.getContent(), cards.getPageable().getPageNumber(), cards.getTotalPages(), cards.getTotalElements()); } /** * Force insert a card. This will use to create a new card or update a currently existed card star level. + * * @param request Map of aimeId and cardId * @return result UserCard or error message */ @@ -138,17 +139,17 @@ public class ApiOngekiPlayerDataController { UserData profile = userDataRepository.findByCard_ExtId((Integer) request.get("aimeId")).orElseThrow(); Integer cardId = (Integer) request.get("cardId"); Optional userCardOptional = userCardRepository.findByUserAndCardId(profile, cardId); - if(userCardOptional.isPresent()) { + if (userCardOptional.isPresent()) { UserCard card = userCardOptional.get(); - if(card.getDigitalStock() < 5) { + if (card.getDigitalStock() < 5) { card.setDigitalStock(card.getDigitalStock() + 1); card.setMaxLevel(card.getMaxLevel() + 5); return ResponseEntity.ok(userCardRepository.save(card)); } else { // If digital stock is larger than 5, check if this card is N card. Optional gameCard = gameCardRepository.findById((long) card.getCardId()); - if(gameCard.isPresent()) { - if(gameCard.get().getRarity().equals("N")) { + if (gameCard.isPresent()) { + if (gameCard.get().getRarity().equals("N")) { card.setDigitalStock(card.getDigitalStock() + 1); card.setMaxLevel(card.getMaxLevel() + 5); return ResponseEntity.ok(userCardRepository.save(card)); @@ -165,21 +166,21 @@ public class ApiOngekiPlayerDataController { return ResponseEntity.ok( userCardRepository.save( new UserCard( - profile, - cardId, - card.getSkillId(), - LocalDateTime.now().format(df)) + profile, + cardId, + card.getSkillId(), + LocalDateTime.now().format(df)) )); } @PostMapping("card/{cardId}/kaika") public ResponseEntity kaikaCard(@RequestParam Integer aimeId, @PathVariable Integer cardId) { Optional userCardOptional = userCardRepository.findByUser_Card_ExtIdAndCardId(aimeId, cardId); - if(userCardOptional.isEmpty()) { + if (userCardOptional.isEmpty()) { return ResponseEntity.status(HttpStatus.NOT_FOUND).body(new MessageResponse("Card not found.")); } else { UserCard card = userCardOptional.get(); - if(!card.getKaikaDate().equals("0000-00-00 00:00:00.0")) { + if (!card.getKaikaDate().equals("0000-00-00 00:00:00.0")) { return ResponseEntity.status(HttpStatus.UNPROCESSABLE_ENTITY).body(new MessageResponse("No, you have done this before.")); } else { card.setKaikaDate(LocalDateTime.now().format(df)); @@ -193,22 +194,28 @@ public class ApiOngekiPlayerDataController { @PostMapping("card/{cardId}/choKaika") public ResponseEntity choKaikaCard(@RequestParam Integer aimeId, @PathVariable Integer cardId) { Optional userCardOptional = userCardRepository.findByUser_Card_ExtIdAndCardId(aimeId, cardId); - if(userCardOptional.isEmpty()) { + if (userCardOptional.isEmpty()) { return ResponseEntity.status(HttpStatus.NOT_FOUND).body(new MessageResponse("Card not found.")); } else { UserCard card = userCardOptional.get(); Optional gameCard = gameCardRepository.findById((long) card.getCardId()); - if(gameCard.isPresent()) { - if(gameCard.get().getRarity().equals("N")) { + if (gameCard.isPresent()) { + if (gameCard.get().getRarity().equals("N")) { card.setMaxLevel(100); card.setLevel(100); + card.setDigitalStock(11); } else { card.setMaxLevel(70); card.setLevel(70); + card.setDigitalStock(5); } } else { - card.setMaxLevel(100); - card.setLevel(100); + card.setMaxLevel(70); + card.setLevel(70); + card.setDigitalStock(5); + } + if (card.getKaikaDate().equals("0000-00-00 00:00:00.0")) { + card.setKaikaDate(LocalDateTime.now().format(df)); } card.setChoKaikaDate(LocalDateTime.now().format(df)); card.setPrintCount(card.getPrintCount() + 1); @@ -220,7 +227,7 @@ public class ApiOngekiPlayerDataController { public ReducedPageResponse getCharacter(@RequestParam Integer aimeId, @RequestParam(required = false, defaultValue = "0") int page, @RequestParam(required = false, defaultValue = "10") int size) { - Page characters = userCharacterRepository.findByUser_Card_ExtId(aimeId, PageRequest.of(page,size)); + Page characters = userCharacterRepository.findByUser_Card_ExtId(aimeId, PageRequest.of(page, size)); return new ReducedPageResponse<>(characters.getContent(), characters.getPageable().getPageNumber(), characters.getTotalPages(), characters.getTotalElements()); } @@ -243,7 +250,7 @@ public class ApiOngekiPlayerDataController { Optional userActivityOptional = userActivityRepository.findByUserAndKindAndActivityId(profile, kind, activityId); UserActivity userActivity; - if(userActivityOptional.isPresent()) { + if (userActivityOptional.isPresent()) { userActivity = userActivityOptional.get(); } else { userActivity = new UserActivity(profile); @@ -262,7 +269,7 @@ public class ApiOngekiPlayerDataController { public ReducedPageResponse getItem(@RequestParam Integer aimeId, @RequestParam(required = false, defaultValue = "0") int page, @RequestParam(required = false, defaultValue = "10") int size) { - Page items = userItemRepository.findByUser_Card_ExtId(aimeId, PageRequest.of(page,size)); + Page items = userItemRepository.findByUser_Card_ExtId(aimeId, PageRequest.of(page, size)); return new ReducedPageResponse<>(items.getContent(), items.getPageable().getPageNumber(), items.getTotalPages(), items.getTotalElements()); } @@ -272,14 +279,14 @@ public class ApiOngekiPlayerDataController { Integer itemKind = (Integer) request.get("itemKind"); Integer itemId = (Integer) request.get("itemId"); int stock = 1; - if(request.containsKey("stock")) { + if (request.containsKey("stock")) { stock = (Integer) request.get("stock"); } Optional userItemOptional = userItemRepository.findByUserAndItemKindAndItemId(profile, itemKind, itemId); UserItem userItem; - if(userItemOptional.isPresent()) { + if (userItemOptional.isPresent()) { userItem = userItemOptional.get(); } else { userItem = new UserItem(profile); @@ -295,7 +302,7 @@ public class ApiOngekiPlayerDataController { public ReducedPageResponse getRecent(@RequestParam Integer aimeId, @RequestParam(required = false, defaultValue = "0") int page, @RequestParam(required = false, defaultValue = "10") int size) { - Page playlogs = userPlaylogRepository.findByUser_Card_ExtId(aimeId,PageRequest.of(page,size, Sort.Direction.DESC, "id")); + Page playlogs = userPlaylogRepository.findByUser_Card_ExtId(aimeId, PageRequest.of(page, size, Sort.Direction.DESC, "id")); return new ReducedPageResponse<>(playlogs.getContent(), playlogs.getPageable().getPageNumber(), playlogs.getTotalPages(), playlogs.getTotalElements()); } @@ -317,7 +324,7 @@ public class ApiOngekiPlayerDataController { @GetMapping("general") public ResponseEntity getGeneralData(@RequestParam Integer aimeId, @RequestParam String key) { - Optional userGeneralDataOptional = userGeneralDataRepository.findByUser_Card_ExtIdAndPropertyKey(aimeId,key); + Optional userGeneralDataOptional = userGeneralDataRepository.findByUser_Card_ExtIdAndPropertyKey(aimeId, key); return userGeneralDataOptional.>map(ResponseEntity::ok) .orElseGet(() -> ResponseEntity.status(HttpStatus.NOT_FOUND).body(new MessageResponse("User or value not found."))); } @@ -344,7 +351,7 @@ public class ApiOngekiPlayerDataController { data.setUserPlaylogList(userPlaylogRepository.findByUser_Card_ExtId(aimeId)); data.setUserStoryList(userStoryRepository.findByUser_Card_ExtId(aimeId)); data.setUserTrainingRoomList(userTrainingRoomRepository.findByUser_Card_ExtId(aimeId)); - } catch (NoSuchElementException e){ + } catch (NoSuchElementException e) { return ResponseEntity.status(HttpStatus.NOT_FOUND) .body(new MessageResponse("User not found")); } catch (Exception e) { @@ -359,7 +366,7 @@ public class ApiOngekiPlayerDataController { @PostMapping("import") public ResponseEntity importAllUserData(@RequestBody OngekiDataImport data) { - if(!data.getGameId().equals("SDDT")) { + if (!data.getGameId().equals("SDDT")) { return ResponseEntity.unprocessableEntity().body(new MessageResponse("Wrong Game Profile, Expected 'SDDT', Get " + data.getGameId())); } From 090fda68d046cbeee3efa733c2db8111e62a07a3 Mon Sep 17 00:00:00 2001 From: shenjiayi Date: Wed, 9 Sep 2020 00:35:25 +0800 Subject: [PATCH 5/5] [ongeki] remove same card data if existed when importing data instead of return 400 --- .../ongeki/ApiOngekiPlayerDataController.java | 46 +++++++++++++++++-- .../dao/userdata/UserActivityRepository.java | 3 ++ .../dao/userdata/UserCardRepository.java | 3 ++ .../dao/userdata/UserChapterRepository.java | 3 ++ .../dao/userdata/UserCharacterRepository.java | 3 ++ .../dao/userdata/UserDataRepository.java | 3 ++ .../dao/userdata/UserDeckRepository.java | 5 +- .../userdata/UserEventPointRepository.java | 3 ++ .../userdata/UserGeneralDataRepository.java | 3 ++ .../dao/userdata/UserItemRepository.java | 3 ++ .../userdata/UserLoginBonusRepository.java | 3 ++ .../userdata/UserMissionPointRepository.java | 3 ++ .../userdata/UserMusicDetailRepository.java | 3 ++ .../dao/userdata/UserMusicItemRepository.java | 3 ++ .../dao/userdata/UserOptionRepository.java | 3 ++ .../dao/userdata/UserPlaylogRepository.java | 4 ++ .../dao/userdata/UserStoryRepository.java | 3 ++ .../userdata/UserTrainingRoomRepository.java | 3 ++ 18 files changed, 94 insertions(+), 6 deletions(-) diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/ongeki/ApiOngekiPlayerDataController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/ongeki/ApiOngekiPlayerDataController.java index be12af0..0787c70 100644 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/ongeki/ApiOngekiPlayerDataController.java +++ b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/ongeki/ApiOngekiPlayerDataController.java @@ -375,11 +375,47 @@ public class ApiOngekiPlayerDataController { Optional cardOptional = cardService.getCardByAccessCode(exUser.getAccessCode()); Card card; if (cardOptional.isPresent()) { - if (userDataRepository.findByCard(cardOptional.get()).isPresent()) { - return ResponseEntity.status(HttpStatus.BAD_REQUEST) - .body(new MessageResponse("This card already has a ongeki profile.")); - } else { - card = cardOptional.get(); + card = cardOptional.get(); + Optional existUserData = userDataRepository.findByCard(cardOptional.get()); + if (existUserData.isPresent()) { +// return ResponseEntity.status(HttpStatus.BAD_REQUEST) +// .body(new MessageResponse("This card already has a ongeki profile.")); + // delete all same card data + userActivityRepository.deleteByUser(existUserData.get()); + userActivityRepository.flush(); + userCardRepository.deleteByUser(existUserData.get()); + userCardRepository.flush(); + userChapterRepository.deleteByUser(existUserData.get()); + userChapterRepository.flush(); + userCharacterRepository.deleteByUser(existUserData.get()); + userCharacterRepository.flush(); + userDeckRepository.deleteByUser(existUserData.get()); + userDeckRepository.flush(); + userEventPointRepository.deleteByUser(existUserData.get()); + userEventPointRepository.flush(); + userGeneralDataRepository.deleteByUser(existUserData.get()); + userGeneralDataRepository.flush(); + userItemRepository.deleteByUser(existUserData.get()); + userItemRepository.flush(); + userLoginBonusRepository.deleteByUser(existUserData.get()); + userLoginBonusRepository.flush(); + userMissionPointRepository.deleteByUser(existUserData.get()); + userMissionPointRepository.flush(); + userMusicDetailRepository.deleteByUser(existUserData.get()); + userMusicDetailRepository.flush(); + userMusicItemRepository.deleteByUser(existUserData.get()); + userMusicItemRepository.flush(); + userOptionRepository.deleteByUser(existUserData.get()); + userOptionRepository.flush(); + userPlaylogRepository.deleteByUser(existUserData.get()); + userPlaylogRepository.flush(); + userStoryRepository.deleteByUser(existUserData.get()); + userStoryRepository.flush(); + userTrainingRoomRepository.deleteByUser(existUserData.get()); + userTrainingRoomRepository.flush(); + + userDataRepository.deleteByCard(card); + userDataRepository.flush(); } } else { card = cardService.registerByAccessCode(exUser.getAccessCode()); diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserActivityRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserActivityRepository.java index f3c6229..dafd2d7 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserActivityRepository.java +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserActivityRepository.java @@ -4,6 +4,7 @@ import icu.samnyan.aqua.sega.ongeki.model.userdata.UserActivity; import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Optional; @@ -20,4 +21,6 @@ public interface UserActivityRepository extends JpaRepository findByUser_Card_ExtIdAndKindOrderBySortNumberDesc(int userId, int kind); + @Transactional + void deleteByUser(UserData user); } diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserCardRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserCardRepository.java index 1bf5694..91018e3 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserCardRepository.java +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserCardRepository.java @@ -6,6 +6,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Optional; @@ -24,4 +25,6 @@ public interface UserCardRepository extends JpaRepository { Page findByUser_Card_ExtId(int userId, Pageable page); + @Transactional + void deleteByUser(UserData user); } diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserChapterRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserChapterRepository.java index 9a30ede..9f65b97 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserChapterRepository.java +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserChapterRepository.java @@ -4,6 +4,7 @@ import icu.samnyan.aqua.sega.ongeki.model.userdata.UserChapter; import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Optional; @@ -18,4 +19,6 @@ public interface UserChapterRepository extends JpaRepository Optional findByUserAndChapterId(UserData userData, int chapterId); + @Transactional + void deleteByUser(UserData user); } diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserCharacterRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserCharacterRepository.java index 5151b49..a34f713 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserCharacterRepository.java +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserCharacterRepository.java @@ -6,6 +6,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Optional; @@ -22,4 +23,6 @@ public interface UserCharacterRepository extends JpaRepository findByUserAndCharacterId(UserData userData, int characterId); + @Transactional + void deleteByUser(UserData user); } diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserDataRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserDataRepository.java index 9e3c345..9c41a1b 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserDataRepository.java +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserDataRepository.java @@ -4,6 +4,7 @@ import icu.samnyan.aqua.sega.general.model.Card; import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; import java.util.Optional; @@ -17,4 +18,6 @@ public interface UserDataRepository extends JpaRepository { Optional findByCard_ExtId(int aimeId); + @Transactional + void deleteByCard(Card card); } diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserDeckRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserDeckRepository.java index 69dc67a..4a83516 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserDeckRepository.java +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserDeckRepository.java @@ -4,6 +4,7 @@ import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; import icu.samnyan.aqua.sega.ongeki.model.userdata.UserDeck; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Optional; @@ -17,5 +18,7 @@ public interface UserDeckRepository extends JpaRepository { List findByUser_Card_ExtId(int userId); Optional findByUserAndDeckId(UserData userData, int deckId); - + + @Transactional + void deleteByUser(UserData user); } diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserEventPointRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserEventPointRepository.java index 4dfb11d..4ca2f0b 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserEventPointRepository.java +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserEventPointRepository.java @@ -4,6 +4,7 @@ import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; import icu.samnyan.aqua.sega.ongeki.model.userdata.UserEventPoint; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Optional; @@ -18,4 +19,6 @@ public interface UserEventPointRepository extends JpaRepository findByUserAndEventId(UserData userData, int eventId); + @Transactional + void deleteByUser(UserData user); } diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserGeneralDataRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserGeneralDataRepository.java index 27bec78..37689ae 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserGeneralDataRepository.java +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserGeneralDataRepository.java @@ -4,6 +4,7 @@ import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; import icu.samnyan.aqua.sega.ongeki.model.userdata.UserGeneralData; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Optional; @@ -20,4 +21,6 @@ public interface UserGeneralDataRepository extends JpaRepository findByUser_Card_ExtIdAndPropertyKey(int userId, String key); + @Transactional + void deleteByUser(UserData user); } diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserItemRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserItemRepository.java index 25e1127..5ec2a5c 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserItemRepository.java +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserItemRepository.java @@ -6,6 +6,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Optional; @@ -24,4 +25,6 @@ public interface UserItemRepository extends JpaRepository { Page findByUser_Card_ExtIdAndItemKind(int userId, int kind, Pageable page); + @Transactional + void deleteByUser(UserData user); } diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserLoginBonusRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserLoginBonusRepository.java index 041d242..5147ae1 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserLoginBonusRepository.java +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserLoginBonusRepository.java @@ -3,6 +3,7 @@ package icu.samnyan.aqua.sega.ongeki.dao.userdata; import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; import icu.samnyan.aqua.sega.ongeki.model.userdata.UserLoginBonus; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Optional; @@ -16,4 +17,6 @@ public interface UserLoginBonusRepository extends JpaRepository findByUserAndBonusId(UserData userData, int bonusId); + @Transactional + void deleteByUser(UserData user); } diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserMissionPointRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserMissionPointRepository.java index 46f64bd..afd8444 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserMissionPointRepository.java +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserMissionPointRepository.java @@ -4,6 +4,7 @@ import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; import icu.samnyan.aqua.sega.ongeki.model.userdata.UserMissionPoint; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Optional; @@ -18,4 +19,6 @@ public interface UserMissionPointRepository extends JpaRepository findByUserAndEventId(UserData userData, int eventId); + @Transactional + void deleteByUser(UserData user); } diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserMusicDetailRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserMusicDetailRepository.java index a74ca9b..bdc4c89 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserMusicDetailRepository.java +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserMusicDetailRepository.java @@ -6,6 +6,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Optional; @@ -24,4 +25,6 @@ public interface UserMusicDetailRepository extends JpaRepository findByUserAndMusicIdAndLevel(UserData userData, int musicId, int level); + @Transactional + void deleteByUser(UserData user); } diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserMusicItemRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserMusicItemRepository.java index 781137f..7915147 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserMusicItemRepository.java +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserMusicItemRepository.java @@ -6,6 +6,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Optional; @@ -22,4 +23,6 @@ public interface UserMusicItemRepository extends JpaRepository findByUserAndMusicId(UserData userData, int musicId); + @Transactional + void deleteByUser(UserData user); } diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserOptionRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserOptionRepository.java index 23b9694..b0d3738 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserOptionRepository.java +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserOptionRepository.java @@ -4,6 +4,7 @@ import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; import icu.samnyan.aqua.sega.ongeki.model.userdata.UserOption; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; import java.util.Optional; @@ -17,4 +18,6 @@ public interface UserOptionRepository extends JpaRepository { Optional findByUser_Card_ExtId(int userId); + @Transactional + void deleteByUser(UserData user); } diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserPlaylogRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserPlaylogRepository.java index c207e9c..51b43fe 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserPlaylogRepository.java +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserPlaylogRepository.java @@ -1,10 +1,12 @@ package icu.samnyan.aqua.sega.ongeki.dao.userdata; +import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; import icu.samnyan.aqua.sega.ongeki.model.userdata.UserPlaylog; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -20,4 +22,6 @@ public interface UserPlaylogRepository extends JpaRepository List findByUser_Card_ExtIdAndMusicIdAndLevel(Integer userId, int musicId, int level); + @Transactional + void deleteByUser(UserData user); } diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserStoryRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserStoryRepository.java index 9a503f2..6107061 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserStoryRepository.java +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserStoryRepository.java @@ -4,6 +4,7 @@ import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; import icu.samnyan.aqua.sega.ongeki.model.userdata.UserStory; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Optional; @@ -18,4 +19,6 @@ public interface UserStoryRepository extends JpaRepository { Optional findByUserAndStoryId(UserData userData, int storyId); + @Transactional + void deleteByUser(UserData user); } diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserTrainingRoomRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserTrainingRoomRepository.java index eaea608..ee3f147 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserTrainingRoomRepository.java +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserTrainingRoomRepository.java @@ -4,6 +4,7 @@ import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; import icu.samnyan.aqua.sega.ongeki.model.userdata.UserTrainingRoom; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Optional; @@ -18,4 +19,6 @@ public interface UserTrainingRoomRepository extends JpaRepository findByUser_Card_ExtId(int userId); + @Transactional + void deleteByUser(UserData user); }