[F] Fix ongeki upsert all: UserData might be empty list

This commit is contained in:
Azalea
2024-03-25 13:39:00 -04:00
parent 131cd5915c
commit 6d0f528201

View File

@@ -98,28 +98,38 @@ public class UpsertUserAllHandler implements BaseHandler {
// All the field should exist, no need to check now. // All the field should exist, no need to check now.
// UserData // UserData
UserData userData; UserData newUserData;
UserData newUserData = upsertUserAll.getUserData().get(0); {
UserData userData;
Optional<UserData> userOptional = userDataRepository.findByCard_ExtId(userId); Optional<UserData> userOptional = userDataRepository.findByCard_ExtId(userId);
if (userOptional.isPresent()) { // UserData might be empty on later runs
userData = userOptional.get(); if (userOptional.isEmpty() && upsertUserAll.getUserData().isEmpty()) {
} else { return null;
userData = new UserData(); }
Card card = cardService.getCardByExtId(userId).orElseThrow();
userData.setCard(card); if (userOptional.isPresent()) {
userData = userOptional.get();
} else {
userData = new UserData();
Card card = cardService.getCardByExtId(userId).orElseThrow();
userData.setCard(card);
}
// If new data exists, use new data. Otherwise, use old data
newUserData = !upsertUserAll.getUserData().isEmpty() ? upsertUserAll.getUserData().get(0) : userData;
newUserData.setId(userData.getId());
newUserData.setCard(userData.getCard());
// Set eventWatchedDate with lastPlayDate, because client doesn't update it
newUserData.setEventWatchedDate(userData.getLastPlayDate());
newUserData.setCmEventWatchedDate(userData.getLastPlayDate());
userDataRepository.save(newUserData);
} }
newUserData.setId(userData.getId());
newUserData.setCard(userData.getCard());
// Set eventWatchedDate with lastPlayDate, because client doesn't update it
newUserData.setEventWatchedDate(userData.getLastPlayDate());
newUserData.setCmEventWatchedDate(userData.getLastPlayDate());
userDataRepository.save(newUserData);
// UserOption // UserOption
UserOption newUserOption = upsertUserAll.getUserOption().get(0); UserOption newUserOption = upsertUserAll.getUserOption().get(0);