@@ -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