Skip to content

Commit 71ddb30

Browse files
committed
🐛 회독기간을 전부 삭제했을때의 버그 해결
- 모든 회독기간 삭제시 위시로 변경
1 parent d9bb3c9 commit 71ddb30

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

src/main/java/com/boggle_boggle/bbegok/service/ReadingRecordService.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -190,23 +190,32 @@ private Library findLibrary(String userId, Long libraryId){
190190
private void updateReadingRecord(UpdateReadingRecordRequest request, User user, ReadingRecord readingRecord) {
191191
if(request.getReadDateList().isPresent()) {
192192
if(request.getReadDateList().get() == null) throw new GeneralException(Code.BAD_REQUEST, "readDateIdList can't null");
193+
194+
193195
List<ReadDateAndIdDto> readDateAndIdDtoList = request.getReadDateList().get();
194196

195197
//기존 ReadDate중에서 요청readDate에 없는경우 해당 readDate를 삭제해야하는데,
196-
//1. id가 있으면 업데이트처리 -> 2. id가 없으면 새로운 회독정보 추가 -> 3. 원래 DB와 비교했을때 1에 해당하지 않은 정보들은 삭제
198+
//1. id가 있으면 업데이트처리 -> 2. id가 없으면 새로운 회독정보 추가 -> 3. 원래 DB와 비교했을때 1,2에 해당하지 않은 정보들은 삭제
197199
List<ReadDate> readDateList = readingRecord.getReadDateList();
198200
Set<Long> set = new HashSet<>();
201+
202+
//(주의) readDateList가 빈 배열일 경우, 위시리스트 형태로 변경한다. (기존 회독정보 전부 삭제 -> 위시 ReadDate만 생성)
203+
if(readDateAndIdDtoList.isEmpty()) {
204+
ReadDate readDate = readDateRepository.save(ReadDate.createReadDate(readingRecord, null, null, ReadStatus.pending));
205+
set.add(readDate.getReadDateSeq());
206+
}
199207
for(ReadDateAndIdDto dto : readDateAndIdDtoList) {
200-
if(dto.getReadDateId() != null) {
208+
if(dto.getReadDateId() != null) { //날짜 업데이트 및 set에 저장
201209
set.add(dto.getReadDateId());
202210
ReadDate readDate = readDateRepository.findById(dto.getReadDateId())
203211
.orElseThrow(()-> new GeneralException(Code.READ_DATE_NOT_FOUND));
204212
readDate.update(dto.getStartReadDate(), dto.getEndReadDate(), dto.getStatus());
205-
} else {
213+
} else { //새로운 날짜 생성 및 set에 저장
206214
ReadDate readDate = readDateRepository.save(ReadDate.createReadDate(readingRecord, dto.getStartReadDate(), dto.getEndReadDate(),dto.getStatus()));
207215
set.add(readDate.getReadDateSeq());
208216
}
209217
}
218+
210219
Iterator<ReadDate> iterator = readDateList.iterator();
211220
while (iterator.hasNext()) {
212221
ReadDate readDate = iterator.next();
@@ -216,6 +225,7 @@ private void updateReadingRecord(UpdateReadingRecordRequest request, User user,
216225
iterator.remove(); // readDateList에서 안전하게 삭제
217226
readDateRepository.delete(readDate); // ReadDate 삭제
218227
}
228+
219229
}
220230
if(request.getLibraryIdList().isPresent()) {
221231
if(request.getLibraryIdList().get() == null) throw new GeneralException(Code.BAD_REQUEST, "libraryIdList can't null");

0 commit comments

Comments
 (0)