API : https://www.notion.so/teamsparta/API-3672dc3ef51480b29366cd8564bbd8cb
ERD : https://www.notion.so/teamsparta/ERD-3672dc3ef51480d3a476d4de699429b6
채팅에 필요한 기본 테이블과 공통 코드를 만든다.
chat_room
chat_room_participant
chat_message
채팅방, 참여자, 메시지 Entity와 Repository, 예외 코드를 준비하는 단계다.
POST /api/chat-rooms
상대 회원 ID를 받아서 채팅방을 만든다.
이미 채팅방이 있으면 새로 만들지 않고 기존 채팅방을 반환한다.
GET /api/chat-rooms
내가 참여 중인 채팅방 목록을 조회한다.
메시지가 없는 채팅방은 목록에 보여주지 않는다.
PATCH /api/chat-rooms/{chatRoomId}/leave
채팅방을 삭제하지 않고, 내 참여 상태만 isLeft = true로 바꾼다.
다시 채팅 시작을 누르면 기존 채팅방으로 재입장된다.
SEND /pub/chat-rooms/{chatRoomId}/messages
WebSocket으로 텍스트 메시지를 보낸다.
메시지는 chat_message에 저장되고, 채팅방 구독자에게 실시간으로 전달된다.
GET /api/chat-rooms/{chatRoomId}/messages
채팅방 메시지 목록을 조회한다.
조회하면 읽음 처리도 같이 진행된다.
0단계: 채팅 테이블/기본 코드 준비
1단계: 채팅방 생성
2단계: 채팅방 목록 조회
3단계: 채팅방 나가기
4단계: 실시간 텍스트 메시지 전송
5단계: 메시지 조회 + 읽음 처리
이미지 업로드는 이번 버전에서 제외하고, TEXT 전용 채팅으로 구현한다.