Skip to content

Commit ab1c979

Browse files
committed
hotfix : 채팅룸 최신순으로 조회
1 parent a6f0792 commit ab1c979

2 files changed

Lines changed: 13 additions & 7 deletions

File tree

src/main/java/ita/tinybite/domain/chat/repository/ChatRoomMemberRepository.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@
55
import ita.tinybite.domain.chat.enums.ChatRoomType;
66
import ita.tinybite.domain.party.entity.Party;
77
import ita.tinybite.domain.user.entity.User;
8-
import org.springframework.data.domain.Limit;
98
import org.springframework.data.jpa.repository.JpaRepository;
9+
import org.springframework.data.jpa.repository.Query;
10+
import org.springframework.data.repository.query.Param;
1011

1112
import java.util.List;
1213
import java.util.Optional;
@@ -20,4 +21,13 @@ public interface ChatRoomMemberRepository extends JpaRepository<ChatRoomMember,
2021
Optional<ChatRoomMember> findByChatRoomAndUserAndChatRoom_Type(ChatRoom chatRoom, User user, ChatRoomType chatRoomType);
2122

2223
Optional<ChatRoomMember> findByUserAndChatRoom_typeAndChatRoom_Party(User user, ChatRoomType chatRoomType, Party chatRoomParty);
24+
25+
@Query("SELECT cr " +
26+
"FROM ChatRoom cr " +
27+
"JOIN ChatRoomMember crm ON crm.chatRoom = cr " +
28+
"LEFT JOIN ChatMessage cm ON cm.chatRoomId = cr.id " +
29+
"WHERE crm.user = :user AND cr.type = :type " +
30+
"GROUP BY cr.id " +
31+
"ORDER BY MAX(cm.createdAt) DESC")
32+
List<ChatRoom> findByUserOrderByLatestMessage(@Param("user") User user, @Param("type") ChatRoomType type);
2333
}

src/main/java/ita/tinybite/domain/chat/service/ChatRoomService.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,7 @@ public class ChatRoomService {
4242
public List<OneToOneChatRoomResDto> getOneToOneRooms() {
4343
User currentUser = securityProvider.getCurrentUser();
4444

45-
// 유저가 참여 중인 chatRoom (이면서 일대일 채팅만)
46-
List<ChatRoom> chatRooms = chatRoomMemberRepository.findByUser(currentUser).stream()
47-
.map(ChatRoomMember::getChatRoom)
48-
.filter(chatRoom -> chatRoom.getType().equals(ChatRoomType.ONE_TO_ONE)).toList();
45+
List<ChatRoom> chatRooms = chatRoomMemberRepository.findByUserOrderByLatestMessage(currentUser, ChatRoomType.ONE_TO_ONE);
4946

5047
return chatRooms.stream()
5148
.map(chatRoom -> {
@@ -84,8 +81,7 @@ public List<GroupChatRoomResDto> getGroupRooms() {
8481
User user = securityProvider.getCurrentUser();
8582

8683
// 유저가 참여 중인 chatRoom (이면서 그룹 채팅만)
87-
List<ChatRoom> chatRooms = chatRoomMemberRepository.findByUser(user).stream()
88-
.map(ChatRoomMember::getChatRoom)
84+
List<ChatRoom> chatRooms = chatRoomMemberRepository.findByUserOrderByLatestMessage(user, ChatRoomType.GROUP).stream()
8985
.filter(chatRoom -> chatRoom.getType().equals(ChatRoomType.GROUP))
9086
.filter(chatRoom -> chatRoom.getParticipants().size() > 1)
9187
.toList();

0 commit comments

Comments
 (0)