Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SIX-197] 현재 참여중인 채팅방을 조회하는 로직 구현 #110

Merged
merged 2 commits into from
Nov 24, 2023

Conversation

bombo-dev
Copy link
Member

@bombo-dev bombo-dev commented Nov 23, 2023

🖊️ 1. Changes

  • 현재 참여중인 채팅방을 조회하는 로직에서 마지막으로 받은 메시지와 받은 시간을 보내는 로직을 추가하였습니다.
  • MongoDB에서 Collections의 메시지를 가지고 오기 위해 MongoTemplate를 사용하였습니다.

🖼️ 2. Screenshot

❗️ 3. Issues

😌 4. To Reviewer

  • 참여중인 채팅방을 조회하는 로직이 상당히 복잡한 것 같습니다..!
  1. 현재 유저가 참여중인 채팅방을 조회한다.
  2. 현재 유저가 참여중인 채팅방에 상대방의 아이디를 조회한다.
  3. 상대방의 아이디에 맞는 필요한 유저 정보를 가지고 온다.
  4. 현재 유저가 참여중인 채팅방의 마지막 메시지 정보를 가지고 온다.
  5. 위에서 가지고온 채팅방 별 정보와 채팅방의 마지막 메시지를 합친다
  6. 반환

✅ 5. Plans

  • - 참여중인 채팅방 조회 서비스 로직 테스트

🙌 6. Checklist

  • - 통합 테스트를 수행해보셨나요?
  • - 혹시 컨벤션에 맞지 않게 작성하지 않았나요?
  • - Change와 Issue, Reviewer를 알아보기 쉽게 작성하였나요?

@bombo-dev bombo-dev self-assigned this Nov 23, 2023
Copy link

github-actions bot commented Nov 23, 2023

Test Results

  56 files    56 suites   8s ⏱️
218 tests 216 ✔️ 2 💤 0
228 runs  226 ✔️ 2 💤 0

Results for commit 11e8acc.

♻️ This comment has been updated with latest results.

Comment on lines +25 to +33
for (Long chatRoomId : chatRoomIds) {
Query query = new Query(Criteria.where("chat_room_id").is(chatRoomId));
query.with(Sort.by(Sort.Direction.DESC, "sent_message_time"));
query.limit(1);
ChatMessage latestMessage = mongoTemplate.findOne(query, ChatMessage.class);
if (latestMessage != null) {
latestMessages.add(latestMessage);
}
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

query.limit(1) 이 마지막 채팅 내용을 가져오는 쿼리인가요?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MySQL의 limit와 같습니다~ query를 마지막으로 보내진 메시지 시간을 내림차순으로 정렬하고 그 쿼리에 대해 1개만 가지고 오면 결국 가장 최근에 보내진 메시지이기 때문입니다~

Copy link
Collaborator

@legowww legowww left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

로직이 복잡하긴 하지만 설명 잘 적어주셔서 어느정도 해석은 된 것 같습니다~

Copy link

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug B 6 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 69 Code Smells

64.1% 64.1% Coverage
0.0% 0.0% Duplication

Copy link
Collaborator

@heenahan heenahan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

로직이 어렵긴 하네요.. 수고하셨어요👍

@bombo-dev bombo-dev merged commit bd44166 into develop Nov 24, 2023
5 checks passed
@bombo-dev bombo-dev deleted the SIX-197 branch November 24, 2023 05:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants