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

Feat/#28/채팅 비지니스 로직 개선 #32

Merged

Conversation

koreaioi
Copy link
Member

@koreaioi koreaioi commented Nov 11, 2024

1. 무슨 이유로 코드를 변경했나요?

String lastMessage 필드 삭제 이유

ChatRoomLastMessage가 있어야할까요..?

나의 로직은 메시지를 보낼때마다 ChatRoomLastMessage를 갱신하지 않는다.
→ 위와 같은 로직은 메시지가 publish될 때마다 ChatRoom에 SQL을 날려야한다. (즉 채팅 1번에 INSERT 1번) → 비효율적이라고 생각.

또한 LastMessage가 필요한 순간은 결국 ChattingList를 반환해야할 때

따라서 ChatRoom에는 LastMessage 필드를 삭제하고 ChattingList를 요청할 때만 각 채팅방 최신 메시지를 조회해서 DTO에 심어 반환해주면 되지 않을까 하는 생각이다.

채팅방 생성 시 존재하는 지 유효성 검사를 실시합니다.

채팅방 생성 API가 호출되는 전제 조건은 existChatRoom()를 호출하여 먼저 유효성 검사를 실시 후 호출하기로 되어있으나,
프론트와 연동 시 불편한 점이 있어 채팅방 생성 비지니스 로직 내부에 추가했습니다.

ErrorMessage와 ResponseMessage 네이밍 규칙 반영

BE 컨벤션으로 반환 상수는 변수명 + 행위 로 통일하기로 한 점을 반영했습니다.

스웨거 설명 추가

컨트롤러에 대한 스웨거 설명 추가합니다.


2. 어떤 위험이나 장애를 발견했나요?


3. 관련 스크린샷을 첨부해주세요.


4. 완료 사항

채팅방 관련 내용 노션으로 정리했습니다.

채팅방 정리


5. 추가 사항

@koreaioi koreaioi linked an issue Nov 11, 2024 that may be closed by this pull request
@koreaioi koreaioi self-assigned this Nov 11, 2024
@seokjun01
Copy link
Collaborator

seokjun01 commented Nov 11, 2024

노션에 설명을 잘해주셔서 채팅 로직이 전반적으로 어떻게 구성되고 진행되는지에 대해 알게되었습니다.
또한 case별로 무슨 DB를 쓰면 좋을지에 대한 설명도 좋았습니다.
로직이 전부 이해간 것은 아니지만!
PR에 설명하신 것처럼 ChatRoom에서 LastMessage 필드를 유지하면, 일관되게 계속 업데이트 해야할 것 같고,
오히려 필요할 때 DTO에 담아서 보내는게 유지보수면에서 더 유리하다고 저도 생각합니다!
구현하시느라 고생하셨습니다!

Copy link
Member

@hyxklee hyxklee left a comment

Choose a reason for hiding this comment

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

로직엔 문제가 없어 보여요!
Controller에도 스웨거 어노테이션만 추가해주시면 될 것 같아요! 고생하셨습니다

@@ -22,6 +22,7 @@ public class ChatRoomController {
private final ChatRoomService chatRoomService;

@PostMapping
@Operation(summary = "채팅 방 생성")
Copy link
Member

Choose a reason for hiding this comment

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

@tag 어노테이션을 이용해 Contoller 자체에도 설명을 추가할 수 있습니다!
다른 컨트롤러와 형식을 맞춰서 추가해주시면 감사하겠습니다!

Copy link
Member Author

Choose a reason for hiding this comment

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

강혁, 석준님이 작성한 형식과 맞춰 설명 추가했습니다!

@koreaioi koreaioi changed the title Feat/#28/채팅 비지니스 로직 개선 및 고도화 Feat/#28/채팅 비지니스 로직 개선 Nov 13, 2024
@koreaioi koreaioi merged commit a940dd2 into main Nov 13, 2024
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[feat] #28 채팅 비지니스 로직 개선 및 고도화
3 participants