[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,11 +98,17 @@ 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 newUserData;
{
UserData userData; UserData userData;
UserData newUserData = upsertUserAll.getUserData().get(0);
Optional<UserData> userOptional = userDataRepository.findByCard_ExtId(userId); Optional<UserData> userOptional = userDataRepository.findByCard_ExtId(userId);
// UserData might be empty on later runs
if (userOptional.isEmpty() && upsertUserAll.getUserData().isEmpty()) {
return null;
}
if (userOptional.isPresent()) { if (userOptional.isPresent()) {
userData = userOptional.get(); userData = userOptional.get();
} else { } else {
@@ -111,6 +117,9 @@ public class UpsertUserAllHandler implements BaseHandler {
userData.setCard(card); 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.setId(userData.getId());
newUserData.setCard(userData.getCard()); newUserData.setCard(userData.getCard());
@@ -119,6 +128,7 @@ public class UpsertUserAllHandler implements BaseHandler {
newUserData.setCmEventWatchedDate(userData.getLastPlayDate()); newUserData.setCmEventWatchedDate(userData.getLastPlayDate());
userDataRepository.save(newUserData); userDataRepository.save(newUserData);
}
// UserOption // UserOption