Skip to content

Commit 8acb9a6

Browse files
authored
Merge pull request #85 from Seeds-kr/feature/GroupChat-PastChat
그룹채팅 과거 기록 읽음 구현
2 parents 832d0f8 + 6ddca77 commit 8acb9a6

4 files changed

Lines changed: 45 additions & 0 deletions

File tree

LifeMaster-BE/src/main/java/com/example/LifeMaster_BE/Group/GroupChat/GroupChatDto.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,16 @@ public static class ChatMessage {
1818
private String senderName;
1919
private String message;
2020
private LocalDateTime timestamp;
21+
public static ChatMessage from(GroupChatEntity entity) {
22+
return ChatMessage.builder()
23+
.id(entity.getId())
24+
.groupId(entity.getGroup().getId())
25+
.senderId(entity.getSender().getId())
26+
.senderName(entity.getSender().getNickname())
27+
.message(entity.getMessage())
28+
.timestamp(entity.getTimestamp())
29+
.build();
30+
}
2131
}
2232

2333
@Builder(toBuilder = true)
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.example.LifeMaster_BE.Group.GroupChat;
2+
3+
import lombok.RequiredArgsConstructor;
4+
import org.springframework.web.bind.annotation.*;
5+
6+
import java.util.List;
7+
8+
@RestController
9+
@RequiredArgsConstructor
10+
@RequestMapping("/groups")
11+
public class GroupChatQueryController {
12+
13+
private final GroupChatService chatService;
14+
15+
// 채팅방 최초 로딩용
16+
@GetMapping("/{groupId}/chats")
17+
public List<GroupChatDto.ChatMessage> getChats(
18+
@PathVariable Long groupId
19+
) {
20+
return chatService.getChatsByGroup(groupId);
21+
}
22+
}

LifeMaster-BE/src/main/java/com/example/LifeMaster_BE/Group/GroupChat/GroupChatRepository.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,8 @@
22

33
import org.springframework.data.jpa.repository.JpaRepository;
44

5+
import java.util.List;
6+
57
public interface GroupChatRepository extends JpaRepository<GroupChatEntity, Long> {
8+
List<GroupChatEntity> findByGroupIdOrderByTimestampAsc(Long groupId);
69
}

LifeMaster-BE/src/main/java/com/example/LifeMaster_BE/Group/GroupChat/GroupChatService.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import org.springframework.stereotype.Service;
77

88
import java.time.LocalDateTime;
9+
import java.util.List;
10+
import java.util.stream.Collectors;
911

1012
@Service
1113
@RequiredArgsConstructor
@@ -40,4 +42,12 @@ public void markAsRead(Long messageId, MemberEntity reader) {
4042
chatMessageRepository.save(messageEntity);
4143
});
4244
}
45+
46+
public List<GroupChatDto.ChatMessage> getChatsByGroup(Long groupId) {
47+
return chatMessageRepository
48+
.findByGroupIdOrderByTimestampAsc(groupId)
49+
.stream()
50+
.map(GroupChatDto.ChatMessage::from)
51+
.collect(Collectors.toList());
52+
}
4353
}

0 commit comments

Comments
 (0)