From a0c766ebb748f8f574c78f5935ef87606d63cc3b Mon Sep 17 00:00:00 2001 From: coke98 Date: Thu, 18 Jul 2024 17:49:01 +0900 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=EC=B1=84=ED=8C=85=20=EC=9A=94?= =?UTF-8?q?=EC=95=BD=20=EC=A0=95=EB=B3=B4=EC=97=90=EC=84=9C=20=EB=A7=88?= =?UTF-8?q?=EC=A7=80=EB=A7=89=20=EB=A9=94=EC=8B=9C=EC=A7=80=20=EC=8B=9C?= =?UTF-8?q?=EA=B0=84=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref: #133 --- .../chat/domain/repository/CustomMessageRepositoryImpl.java | 1 + .../aliens/backend/chat/service/model/ChatMessageSummary.java | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/aliens/backend/chat/domain/repository/CustomMessageRepositoryImpl.java b/src/main/java/com/aliens/backend/chat/domain/repository/CustomMessageRepositoryImpl.java index 50ac7fba..db6b7b72 100644 --- a/src/main/java/com/aliens/backend/chat/domain/repository/CustomMessageRepositoryImpl.java +++ b/src/main/java/com/aliens/backend/chat/domain/repository/CustomMessageRepositoryImpl.java @@ -55,6 +55,7 @@ public List aggregateMessageSummaries(List chatRoomIds AggregationOperation match = Aggregation.match(Criteria.where("roomId").in(chatRoomIds)); AggregationOperation group = Aggregation.group("roomId") .last("content").as("lastMessageContent") + .last("sendTime").as("lastMessageTime") .sum(ConditionalOperators.when(Criteria.where("receiverId").is(memberId).and("isRead").is(false)).then(1).otherwise(0)).as("unreadCount"); Aggregation aggregation = Aggregation.newAggregation(match, group); AggregationResults results = mongoTemplate.aggregate(aggregation, "message", ChatMessageSummary.class); diff --git a/src/main/java/com/aliens/backend/chat/service/model/ChatMessageSummary.java b/src/main/java/com/aliens/backend/chat/service/model/ChatMessageSummary.java index d15d9276..a581ef0e 100644 --- a/src/main/java/com/aliens/backend/chat/service/model/ChatMessageSummary.java +++ b/src/main/java/com/aliens/backend/chat/service/model/ChatMessageSummary.java @@ -1,4 +1,6 @@ package com.aliens.backend.chat.service.model; -public record ChatMessageSummary(Long roomId, String lastMessageContent, Long numberOfUnreadMessages) { +import java.util.Date; + +public record ChatMessageSummary(Long roomId, String lastMessageContent, Date lastMessageTime, Long numberOfUnreadMessages) { } \ No newline at end of file From 109d421fd0054aca27a45e9f24d922dbed9a66c0 Mon Sep 17 00:00:00 2001 From: coke98 Date: Thu, 18 Jul 2024 17:55:51 +0900 Subject: [PATCH 2/2] =?UTF-8?q?test:=20=EC=B1=84=ED=8C=85=20=EC=9A=94?= =?UTF-8?q?=EC=95=BD=20=EC=A0=95=EB=B3=B4=EC=97=90=EC=84=9C=20=EB=A7=88?= =?UTF-8?q?=EC=A7=80=EB=A7=89=20=EB=A9=94=EC=8B=9C=EC=A7=80=20=EC=8B=9C?= =?UTF-8?q?=EA=B0=84=20=EC=B6=94=EA=B0=80=EB=A1=9C=20=EC=9D=B8=ED=95=9C=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref: #133 --- .../aliens/backend/chatting/service/ChatServiceTest.java | 4 +++- .../java/com/aliens/backend/docs/ChatRestDocsTest.java | 7 +++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/test/java/com/aliens/backend/chatting/service/ChatServiceTest.java b/src/test/java/com/aliens/backend/chatting/service/ChatServiceTest.java index eb049c70..d5cdda54 100644 --- a/src/test/java/com/aliens/backend/chatting/service/ChatServiceTest.java +++ b/src/test/java/com/aliens/backend/chatting/service/ChatServiceTest.java @@ -18,6 +18,7 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; +import java.util.Date; import java.util.List; import static org.mockito.ArgumentMatchers.any; @@ -36,10 +37,11 @@ void setUp() { receiver = dummyGenerator.generateSingleMember();; Message message = Message.of(makeMessageSendRequest()); + Date now = new Date(); doReturn(message).when(messageRepository).save(any()); doNothing().when(messageRepository).markMessagesAsRead(any(),any()); - ChatMessageSummary summary = new ChatMessageSummary(1L,"g",1L); + ChatMessageSummary summary = new ChatMessageSummary(1L,"this is the last message", now,1L); List givenSummary = List.of(summary,summary) ; doReturn(givenSummary).when(messageRepository).aggregateMessageSummaries(any(),any()); diff --git a/src/test/java/com/aliens/backend/docs/ChatRestDocsTest.java b/src/test/java/com/aliens/backend/docs/ChatRestDocsTest.java index 8be18efc..2c6e3687 100644 --- a/src/test/java/com/aliens/backend/docs/ChatRestDocsTest.java +++ b/src/test/java/com/aliens/backend/docs/ChatRestDocsTest.java @@ -14,6 +14,7 @@ import java.util.ArrayList; import java.util.Arrays; +import java.util.Date; import java.util.List; import static org.mockito.ArgumentMatchers.any; @@ -77,10 +78,11 @@ void getChatSummary() throws Exception { when(chatRoom2.getStatus()).thenReturn(ChatRoomStatus.OPEN); chatRooms.add(chatRoom1); chatRooms.add(chatRoom2); + Date now = new Date(); List chatMessageSummaries = List.of( - new ChatMessageSummary(1L, "Last message in Room 1", 5L), - new ChatMessageSummary(2L, "Last message in Room 2", 3L) + new ChatMessageSummary(1L, "Last message in Room 1", now, 5L), + new ChatMessageSummary(2L, "Last message in Room 2", new Date(now.getTime() - 3600000), 3L) ); ChatSummaryResponse result = new ChatSummaryResponse(chatRooms, chatMessageSummaries); @@ -103,6 +105,7 @@ void getChatSummary() throws Exception { fieldWithPath("result.chatMessageSummaries").description("각 채팅방의 요약 정보"), fieldWithPath("result.chatMessageSummaries[].roomId").description("채팅방 ID"), fieldWithPath("result.chatMessageSummaries[].lastMessageContent").description("채팅방의 마지막 메시지 내용"), + fieldWithPath("result.chatMessageSummaries[].lastMessageTime").description("채팅방의 마지막 메시지 시간"), fieldWithPath("result.chatMessageSummaries[].numberOfUnreadMessages").description("읽지 않은 메시지의 수") ) ));