diff --git a/src/main/java/com/mos/backend/studychatmessages/application/StudyChatMessageService.java b/src/main/java/com/mos/backend/studychatmessages/application/StudyChatMessageService.java index d6162205..d4167e7a 100644 --- a/src/main/java/com/mos/backend/studychatmessages/application/StudyChatMessageService.java +++ b/src/main/java/com/mos/backend/studychatmessages/application/StudyChatMessageService.java @@ -98,8 +98,7 @@ public int getUnreadCnt(Long userId, Long studyChatRoomId) { return studyChatMessageRepository.countByStudyChatRoomIdAndCreatedAtAfter(studyChatRoom.getId(), lastEntryAt); } - public StudyChatMessage getLastMessage(StudyChatRoom studyChatRoom) { - return studyChatMessageRepository.findFirstByStudyChatRoomOrderByCreatedAtDesc(studyChatRoom) - .orElseThrow(() -> new MosException(StudyChatMessageErrorCode.NOT_FOUND)); + public Optional getLastMessage(StudyChatRoom studyChatRoom) { + return studyChatMessageRepository.findFirstByStudyChatRoomOrderByCreatedAtDesc(studyChatRoom); } } diff --git a/src/main/java/com/mos/backend/studychatrooms/application/StudyChatRoomInfoService.java b/src/main/java/com/mos/backend/studychatrooms/application/StudyChatRoomInfoService.java index efd6d035..69a27ec3 100644 --- a/src/main/java/com/mos/backend/studychatrooms/application/StudyChatRoomInfoService.java +++ b/src/main/java/com/mos/backend/studychatrooms/application/StudyChatRoomInfoService.java @@ -12,10 +12,12 @@ import com.mos.backend.studychatrooms.entity.StudyChatRoomInfo; import com.mos.backend.studychatrooms.infrastructure.StudyChatRoomInfoRepository; import lombok.RequiredArgsConstructor; +import org.apache.logging.log4j.util.Strings; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.util.List; +import java.util.Optional; @RequiredArgsConstructor @Service @@ -69,11 +71,13 @@ public MyStudyChatRoomRes updateStudyChatRoomInfo(StudyChatRoomInfoMessageDto dt public StudyChatRoomInfo saveStudyChatRoomInfo(Long studyChatRoomId, Long userId) { StudyChatRoom studyChatRoom = entityFacade.getStudyChatRoom(studyChatRoomId); - StudyChatMessage studyChatMessage = studyChatMessageService.getLastMessage(studyChatRoom); + Optional studyChatMessage = studyChatMessageService.getLastMessage(studyChatRoom); int unreadCount = studyChatMessageService.getUnreadCnt(userId, studyChatRoom.getId()); - StudyChatRoomInfo info = StudyChatRoomInfo.of( - studyChatRoom.getName(), studyChatMessage.getMessage(), studyChatMessage.getCreatedAt(), unreadCount + StudyChatRoomInfo info = studyChatMessage.map(message -> + StudyChatRoomInfo.of(studyChatRoom.getName(), message.getMessage(), message.getCreatedAt(), unreadCount) + ).orElseGet(() -> + StudyChatRoomInfo.of(studyChatRoom.getName(), Strings.EMPTY, null, 0) ); studyChatRoomInfoRepository.save(userId, studyChatRoomId, info); diff --git a/src/main/java/com/mos/backend/studychatrooms/application/StudyChatRoomService.java b/src/main/java/com/mos/backend/studychatrooms/application/StudyChatRoomService.java index 1ba79b1d..1a43d7fe 100644 --- a/src/main/java/com/mos/backend/studychatrooms/application/StudyChatRoomService.java +++ b/src/main/java/com/mos/backend/studychatrooms/application/StudyChatRoomService.java @@ -9,10 +9,12 @@ import com.mos.backend.studychatrooms.infrastructure.StudyChatRoomRepository; import com.mos.backend.users.entity.User; import lombok.RequiredArgsConstructor; +import org.apache.logging.log4j.util.Strings; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.Optional; @RequiredArgsConstructor @Service @@ -41,15 +43,26 @@ public List getMyStudyChatRooms(Long userId) { .map(studyChatRoom -> { int unreadCount = studyChatMessageService.getUnreadCnt(user.getId(), studyChatRoom.getId()); - StudyChatMessage studyChatMessage = studyChatMessageService.getLastMessage(studyChatRoom); + Optional optionalStudyChatMessage = studyChatMessageService.getLastMessage(studyChatRoom); - return MyStudyChatRoomRes.of( - studyChatRoom.getId(), - studyChatRoom.getName(), - studyChatMessage.getMessage(), - studyChatMessage.getCreatedAt(), - unreadCount - ); + return optionalStudyChatMessage + .map(studyChatMessage -> + MyStudyChatRoomRes.of( + studyChatRoom.getId(), + studyChatRoom.getName(), + studyChatMessage.getMessage(), + studyChatMessage.getCreatedAt(), + unreadCount + ) + ).orElseGet(() -> + MyStudyChatRoomRes.of( + studyChatRoom.getId(), + studyChatRoom.getName(), + Strings.EMPTY, + null, + unreadCount + ) + ); }) .toList(); diff --git a/src/test/java/com/mos/backend/studychatrooms/application/StudyChatRoomServiceTest.java b/src/test/java/com/mos/backend/studychatrooms/application/StudyChatRoomServiceTest.java index 32666bb5..d25b2d86 100644 --- a/src/test/java/com/mos/backend/studychatrooms/application/StudyChatRoomServiceTest.java +++ b/src/test/java/com/mos/backend/studychatrooms/application/StudyChatRoomServiceTest.java @@ -19,7 +19,9 @@ import java.util.Optional; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) @DisplayName("StudyChatRoomService 테스트") @@ -77,7 +79,7 @@ void getMyStudyChatRooms_Success() { when(studyChatRoomRepository.findAllByUserId(userId)).thenReturn(List.of(studyChatRoom)); when(studyChatRoom.getId()).thenReturn(1L); when(studyChatMessageService.getUnreadCnt(userId, studyChatRoomId)).thenReturn(unreadCount); - when(studyChatMessageService.getLastMessage(studyChatRoom)).thenReturn(studyChatMessage); + when(studyChatMessageService.getLastMessage(studyChatRoom)).thenReturn(Optional.of(studyChatMessage)); // When studyChatRoomService.getMyStudyChatRooms(userId); @@ -87,4 +89,4 @@ void getMyStudyChatRooms_Success() { verify(studyChatMessageService).getUnreadCnt(userId, studyChatRoomId); } } -} \ No newline at end of file +}