비효율적인 읽음 처리 개선하기
public void messageRead(Long roomId) {
ChatRoomJpaEntity chatRoomJpaEntity = chatRoomJpaRepository.findById(roomId).orElseThrow(() -> new EntityNotFoundException("room not found"));
Member member = memberRepository.findByEmail(SecurityContextHolder.getContext().getAuthentication().getName()).orElseThrow(() -> new EntityNotFoundException("member not found"));
List<ReadState> readStates = readStateJpaRepository.findByChatRoomJpaEntityIdAndMember(roomId,member);
for(ReadState readState : readStates){
readState.updateReadState(true);
}
}@Modifying(clearAutomatically = true)
@Query("UPDATE ReadState rs SET rs.isRead = true
WHERE rs.chatRoomJpaEntity.id = :roomId AND rs.member = :member
AND rs.isRead = false")
int updateAllAsReadByRoomIdAndMember(@Param("roomId") Long roomId, @Param("member") Member member);
Last updated