Skip to content

Commit

Permalink
Merge pull request #134 from Re-4aliens/fix/#133_chat-last-message-se…
Browse files Browse the repository at this point in the history
…nd-time

채팅 요약 정보에서 마지막 메시지의 시간 추가
  • Loading branch information
coke98 authored Jul 18, 2024
2 parents 5cd9231 + 109d421 commit 6f97835
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 7 deletions.
19 changes: 16 additions & 3 deletions .github/workflows/friendship-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,21 @@ jobs:
key: ${{ secrets.PRIVATE_KEY }} # pem 키
# 도커 작업
script: |
# 최신 friendship 이미지 pull
sudo docker pull ${{ secrets.DOCKER_USERNAME }}/${{ env.APP_NAME }}:latest
sudo docker stop $(docker ps --filter "ancestor=${{ secrets.DOCKER_USERNAME }}/${{ env.APP_NAME }}" -q)
sudo docker run -d --log-driver=syslog -p 443:8080 -e TZ=Asia/Seoul ${{ secrets.DOCKER_USERNAME }}/${{ env.APP_NAME }}:latest
sudo docker rm $(docker ps --filter "status=exited" --filter "ancestor=${{ secrets.DOCKER_USERNAME }}/${{ env.APP_NAME }}" -q)
# 기존 friendship 컨테이너 중지 및 삭제
sudo docker stop friendship || true
sudo docker rm friendship || true
# 새 friendship 컨테이너 실행
sudo docker run -d --log-driver=syslog -p 443:8080 --name friendship -e TZ=Asia/Seoul ${{ secrets.DOCKER_USERNAME }}/${{ env.APP_NAME }}:latest
# friendship 관련 종료된 컨테이너 삭제
sudo docker container prune -f
# 사용하지 않는 friendship 이미지만 삭제 (최신 버전 제외)
sudo docker image prune -f
# 이전 버전의 friendship 이미지 삭제
sudo docker images ${{ secrets.DOCKER_USERNAME }}/${{ env.APP_NAME }} -q | awk 'NR>1' | xargs -r sudo docker rmi -f
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ public List<ChatMessageSummary> aggregateMessageSummaries(List<Long> 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<ChatMessageSummary> results = mongoTemplate.aggregate(aggregation, "message", ChatMessageSummary.class);
Expand Down
Original file line number Diff line number Diff line change
@@ -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) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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<ChatMessageSummary> givenSummary = List.of(summary,summary) ;
doReturn(givenSummary).when(messageRepository).aggregateMessageSummaries(any(),any());

Expand Down
7 changes: 5 additions & 2 deletions src/test/java/com/aliens/backend/docs/ChatRestDocsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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<ChatMessageSummary> 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);
Expand All @@ -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("읽지 않은 메시지의 수")
)
));
Expand Down

0 comments on commit 6f97835

Please sign in to comment.