Skip to content

채팅방 목록 조회 API 구현#139

Merged
ckdals4600 merged 2 commits intomainfrom
feature/#128-chat-list-api
Dec 18, 2025
Merged

채팅방 목록 조회 API 구현#139
ckdals4600 merged 2 commits intomainfrom
feature/#128-chat-list-api

Conversation

@ckdals4600
Copy link
Contributor

@ckdals4600 ckdals4600 commented Dec 16, 2025

관련 이슈

PR 설명

  • 사용자가 생성했던 채팅방 목록을 조회할 수 있는 API 개발
  • 단순 생성일 기준이 아닌, 가장 최근에 대화가 오간 순서대로 채팅방을 정렬

작업 내용

1. API 구현 (ChatController)

  • Endpoint: GET /v1/chats
  • Response: ChatsRes (채팅방 ID 및 제목 리스트).
         {
           "success": true,
           "status": "OK",
           "message": "채팅방 목록 조회 완료",
           "data": {
             "chats": [
               {
                 "id": 10,
                 "title": "Spring Boot 관련 질문"
               },
               {
                 "id": 9,
                 "title": "JPA 성능 최적화 방법"
               }
             ]
           }
         }

2. 비즈니스 로직 (Facade & Service)

  • ChatFacade:
    • ChatService를 호출하여 도메인 엔티티를 조회하고, ChatsRes DTO로 변환하여 컨트롤러에 반환함.
    • @Transactional(readOnly = true)를 적용하여 조회 성능을 최적화함.
  • ChatService & ChatQueryService:
    • ChatQueryService가 실제 DB 조회를 전담하며, ChatService는 이를 호출하는 구조로 CQS(Command Query Separation)를 준수함.

3. Repository (ChatRepository)

  • findAllByMemberOrderByLastMessageDesc:
    • @Query를 활용하여 채팅방(Chat)과 메시지(Message)를 조인(JOIN)함.
    • 채팅방별로 그룹화(GROUP BY)한 뒤, 가장 최근 메시지의 생성일(MAX(m.createdAt))을 기준으로 내림차순 정렬하여 반환함.
    • JOIN(Inner Join)을 사용했으므로 대화 내역(메시지)이 존재하는 채팅방만 조회됨.

4. 테스트 작성

  • Integration Test (ChatControllerIntegrationTest):
    • @AutoConfigureMockMvc를 사용하여 실제 요청 흐름을 시뮬레이션하고, JSON 응답 필드 검증을 수행함.
  • Unit Test:
    • ChatFacadeTest: Service 호출 및 DTO 변환 로직을 Mocking 테스트함.
    • ChatRepositoryTest: DataJpaTest를 통해 멤버별 데이터 격리 및 정렬 조건(생성일 내림차순) 동작을 검증함.

@ckdals4600 ckdals4600 linked an issue Dec 16, 2025 that may be closed by this pull request
@ckdals4600 ckdals4600 requested review from Goder-0 and minibr December 16, 2025 16:23
@ckdals4600 ckdals4600 self-assigned this Dec 16, 2025
@ckdals4600 ckdals4600 changed the title feat: 채팅방 목록 API 구현 (#128) 채팅방 목록 조회 API 구현 Dec 16, 2025
@ckdals4600 ckdals4600 force-pushed the feature/#128-chat-list-api branch from bf15513 to 8d7fb4a Compare December 16, 2025 16:30
@github-actions
Copy link

github-actions bot commented Dec 16, 2025

📊 코드 커버리지 리포트

Overall Project 92.29% 🍏
Files changed 100% 🍏

File Coverage
ChatsRes.java 100% 🍏
ChatQueryService.java 100% 🍏
ChatService.java 100% 🍏
ChatFacade.java 100% 🍏
ChatController.java 100% 🍏

@ckdals4600 ckdals4600 merged commit 25cc94f into main Dec 18, 2025
1 check passed
@ckdals4600 ckdals4600 deleted the feature/#128-chat-list-api branch December 18, 2025 17:30
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.

채팅방 목록 조회 API 개발

2 participants