Skip to content

[hotfix] Room 관련 도메인 roomId 반환하도록 수정#128

Merged
buzz0331 merged 4 commits intodevelopfrom
hotfix/#126-room-response
Aug 3, 2025
Merged

[hotfix] Room 관련 도메인 roomId 반환하도록 수정#128
buzz0331 merged 4 commits intodevelopfrom
hotfix/#126-room-response

Conversation

@buzz0331
Copy link
Contributor

@buzz0331 buzz0331 commented Aug 1, 2025

#️⃣ 연관된 이슈

closes #126

📝 작업 내용

다음과 같은 api의 반환값을 수정했습니다. 혹시 누락된 api가 보이시면 언제든 말씀해주세요!

  • 방 참여 상태 변경 api
  • 방 모집마감 api
  • 기록 생성 api
  • 기록장 조회 api
  • 책 전체 페이지 수 및 총평 작성 가능 여부 조회 api
  • 투표 생성 api

📸 스크린샷

💬 리뷰 요구사항

리뷰어가 특별히 봐주었으면 하는 부분이 있다면 작성해주세요

📌 PR 진행 시 이러한 점들을 참고해 주세요

* P1 : 꼭 반영해 주세요 (Request Changes) - 이슈가 발생하거나 취약점이 발견되는 케이스 등
* P2 : 반영을 적극적으로 고려해 주시면 좋을 것 같아요 (Comment)
* P3 : 이런 방법도 있을 것 같아요~ 등의 사소한 의견입니다 (Chore)

Summary by CodeRabbit

  • 신규 기능

    • 여러 응답 객체에 roomId 필드가 추가되어, 생성/조회 시 방 정보를 함께 제공합니다.
    • 방 참여 및 모집 종료 시 상세 응답 데이터가 반환됩니다.
  • 버그 수정

    • 방 모집 종료 관련 인터페이스 명칭 및 반환 타입이 일관성 있게 수정되었습니다.
  • 리팩터

    • 레코드 생성, 투표 생성 등에서 단일 ID 반환 대신 결과 객체를 반환하도록 개선되었습니다.
    • 불필요한 더미 클래스가 삭제되었습니다.
  • 테스트

    • 새로운 응답 구조와 결과 객체에 맞춰 테스트가 보강될 수 있습니다.

@coderabbitai
Copy link

coderabbitai bot commented Aug 1, 2025

Walkthrough

Room, Record, 그리고 Vote 도메인에서 생성 및 검색 관련 응답 객체에 roomId 필드가 추가되었습니다. 주요 서비스, 포트, 컨트롤러, 응답 레코드, DTO의 반환 타입 및 생성 방식이 roomId를 포함하도록 일괄적으로 변경되었습니다. 불필요한/구식 인터페이스 및 DTO는 삭제되었습니다.

Changes

Cohort / File(s) Change Summary
Record 도메인: roomId 필드 및 반환 타입 확장
src/main/java/konkuk/thip/record/adapter/in/web/response/RecordCreateResponse.java, src/main/java/konkuk/thip/record/adapter/in/web/response/RecordSearchResponse.java, src/main/java/konkuk/thip/record/application/port/in/RecordCreateUseCase.java, src/main/java/konkuk/thip/record/application/port/in/dto/RecordCreateResult.java, src/main/java/konkuk/thip/record/application/service/RecordCreateService.java, src/main/java/konkuk/thip/record/application/service/RecordSearchService.java
Record 생성/검색 응답 및 관련 서비스, 포트, DTO에 roomId 필드 추가 및 반환 타입을 RecordCreateResult로 변경.
Room 도메인: 응답 객체 및 반환 타입 통일, roomId 포함
src/main/java/konkuk/thip/room/adapter/in/web/RoomCommandController.java, src/main/java/konkuk/thip/room/adapter/in/web/response/RoomGetBookPageResponse.java, src/main/java/konkuk/thip/room/adapter/in/web/response/RoomJoinResponse.java, src/main/java/konkuk/thip/room/adapter/in/web/response/RoomRecruitCloseResponse.java, src/main/java/konkuk/thip/room/application/port/in/RoomJoinUseCase.java, src/main/java/konkuk/thip/room/application/port/in/RoomRecruitCloseUseCase.java, src/main/java/konkuk/thip/room/application/port/in/dto/RoomJoinResult.java, src/main/java/konkuk/thip/room/application/service/RoomGetBookPageService.java, src/main/java/konkuk/thip/room/application/service/RoomJoinService.java, src/main/java/konkuk/thip/room/application/service/RoomRecruitCloseService.java
Room 관련 컨트롤러, 서비스, 포트, 응답 객체에 roomId 필드 추가 및 반환 타입을 DTO로 통일. 구식 인터페이스(RoomRecruitCloseUsecase)와 더미 DTO(DummyResult) 삭제, 관련 명칭 및 반환 타입 정정.
Vote 도메인: roomId 필드 및 반환 타입 확장
src/main/java/konkuk/thip/vote/adapter/in/web/response/VoteCreateResponse.java, src/main/java/konkuk/thip/vote/application/port/in/VoteCreateUseCase.java, src/main/java/konkuk/thip/vote/application/port/in/dto/VoteCreateResult.java, src/main/java/konkuk/thip/vote/application/service/VoteCreateService.java
Vote 생성 응답 및 관련 서비스, 포트, DTO에 roomId 필드 추가 및 반환 타입을 VoteCreateResult로 변경.
불필요/구식 파일 삭제
src/main/java/konkuk/thip/room/application/port/in/RoomRecruitCloseUsecase.java, src/main/java/konkuk/thip/room/application/port/in/dto/DummyResult.java
구식 인터페이스와 불필요한 더미 DTO 파일 삭제.

Sequence Diagram(s)

sequenceDiagram
    participant Client
    participant Controller
    participant Service
    participant Repository

    Client->>Controller: createRecord/createVote/joinRoom/closeRoomRecruit 등 요청
    Controller->>Service: 요청 처리 (Command 전달)
    Service->>Repository: 데이터 저장/변경
    Repository-->>Service: 엔티티/ID 반환
    Service-->>Controller: Result DTO(roomId 포함) 반환
    Controller-->>Client: Response(roomId 포함) 반환
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Assessment against linked issues

Objective Addressed Explanation
Room 도메인 관련 response 모두 roomId 반환 (#126)

Assessment against linked issues: Out-of-scope changes

(해당 사항 없음)

Possibly related PRs

  • [feat] 기록 생성 api 개발 #50: Record 생성 API의 반환값 및 응답 구조를 roomId 포함으로 확장한 PR로, 본 PR과 동일한 RecordCreateResponse 및 관련 컴포넌트에 직접적인 코드 레벨 연결이 있습니다.
  • [feat] 투표 생성 api 개발 #46: Vote 생성 흐름에서 VoteCreateResponse 및 VoteCreateUseCase 반환 타입을 단순 ID에서 VoteCreateResult로 변경한 PR로, 본 PR과 Vote 도메인 변경이 강하게 연결되어 있습니다.

Suggested labels

🛠️ feat

Suggested reviewers

  • seongjunnoh

Poem

방마다 아이디를 담아,
응답이 더 똑똑해졌지!
방, 기록, 투표 모두 함께
🐰 토끼가 뛰며 외쳐요—
"roomId 없던 시절은 안녕~
이제는 어디서든 방을 찾을 수 있답니다!"
( ˘▽˘)っ🎉

Note

⚡️ Unit Test Generation is now available in beta!

Learn more here, or try it out under "Finishing Touches" below.


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 90e6fa1 and 3d546ec.

📒 Files selected for processing (22)
  • src/main/java/konkuk/thip/record/adapter/in/web/response/RecordCreateResponse.java (1 hunks)
  • src/main/java/konkuk/thip/record/adapter/in/web/response/RecordSearchResponse.java (1 hunks)
  • src/main/java/konkuk/thip/record/application/port/in/RecordCreateUseCase.java (1 hunks)
  • src/main/java/konkuk/thip/record/application/port/in/dto/RecordCreateResult.java (1 hunks)
  • src/main/java/konkuk/thip/record/application/service/RecordCreateService.java (4 hunks)
  • src/main/java/konkuk/thip/record/application/service/RecordSearchService.java (1 hunks)
  • src/main/java/konkuk/thip/room/adapter/in/web/RoomCommandController.java (4 hunks)
  • src/main/java/konkuk/thip/room/adapter/in/web/response/RoomGetBookPageResponse.java (1 hunks)
  • src/main/java/konkuk/thip/room/adapter/in/web/response/RoomJoinResponse.java (1 hunks)
  • src/main/java/konkuk/thip/room/adapter/in/web/response/RoomRecruitCloseResponse.java (1 hunks)
  • src/main/java/konkuk/thip/room/application/port/in/RoomJoinUseCase.java (1 hunks)
  • src/main/java/konkuk/thip/room/application/port/in/RoomRecruitCloseUseCase.java (1 hunks)
  • src/main/java/konkuk/thip/room/application/port/in/RoomRecruitCloseUsecase.java (0 hunks)
  • src/main/java/konkuk/thip/room/application/port/in/dto/DummyResult.java (0 hunks)
  • src/main/java/konkuk/thip/room/application/port/in/dto/RoomJoinResult.java (1 hunks)
  • src/main/java/konkuk/thip/room/application/service/RoomGetBookPageService.java (1 hunks)
  • src/main/java/konkuk/thip/room/application/service/RoomJoinService.java (3 hunks)
  • src/main/java/konkuk/thip/room/application/service/RoomRecruitCloseService.java (3 hunks)
  • src/main/java/konkuk/thip/vote/adapter/in/web/response/VoteCreateResponse.java (1 hunks)
  • src/main/java/konkuk/thip/vote/application/port/in/VoteCreateUseCase.java (1 hunks)
  • src/main/java/konkuk/thip/vote/application/port/in/dto/VoteCreateResult.java (1 hunks)
  • src/main/java/konkuk/thip/vote/application/service/VoteCreateService.java (3 hunks)
💤 Files with no reviewable changes (2)
  • src/main/java/konkuk/thip/room/application/port/in/dto/DummyResult.java
  • src/main/java/konkuk/thip/room/application/port/in/RoomRecruitCloseUsecase.java
🧰 Additional context used
🧠 Learnings (4)
📓 Common learnings
Learnt from: seongjunnoh
PR: THIP-TextHip/THIP-Server#101
File: src/main/java/konkuk/thip/comment/application/service/CommentCreateService.java:36-39
Timestamp: 2025-07-26T06:09:00.850Z
Learning: THIP 프로젝트에서는 "사용자가 방에 속하는지 검증" 로직을 RoomParticipantPolicy 도메인 서비스로 캡슐화하여 재사용성을 높이고 비즈니스 로직의 중복을 방지하는 방식을 선호한다.
Learnt from: seongjunnoh
PR: THIP-TextHip/THIP-Server#101
File: src/main/java/konkuk/thip/comment/application/service/CommentCreateService.java:36-39
Timestamp: 2025-07-26T06:09:00.850Z
Learning: THIP 프로젝트에서 Record와 Vote는 Room에 속하지만 Feed는 Room에 속하지 않는 구조이며, 댓글 작성 시 Record/Vote에 대해서만 사용자가 해당 Room의 참가자인지 검증이 필요하다.
Learnt from: seongjunnoh
PR: THIP-TextHip/THIP-Server#43
File: src/main/java/konkuk/thip/book/application/port/out/BookCommandPort.java:0-0
Timestamp: 2025-07-03T03:05:05.031Z
Learning: THIP 프로젝트에서는 CQRS Port 분리 시 다음 컨벤션을 따름: CommandPort에는 findByXXX를 통해 도메인 엔티티를 찾아오는 메서드를 추가하고, QueryPort에는 조회 API의 response에 해당하는 데이터들을 DB로부터 조회하는 메서드를 추가함.
Learnt from: hd0rable
PR: THIP-TextHip/THIP-Server#57
File: src/test/java/konkuk/thip/room/domain/RoomTest.java:0-0
Timestamp: 2025-07-08T16:30:33.771Z
Learning: Room 도메인에서 startDate는 현재 날짜 이후여야 하는 도메인 규칙이 있어서, 테스트에서 만료된 상태를 시뮬레이션하려면 reflection을 사용해야 한다.
Learnt from: buzz0331
PR: THIP-TextHip/THIP-Server#78
File: src/main/java/konkuk/thip/user/application/port/out/FollowingQueryPort.java:3-3
Timestamp: 2025-07-14T18:22:56.538Z
Learning: THIP 프로젝트에서는 Query API(조회 API)에 한해서는 application 계층에서 adapter.in.web.response 패키지의 response DTO를 직접 참조하는 것을 허용함. 이는 CQRS 아키텍처에서 읽기 전용 작업의 효율성을 위한 팀 컨벤션임.
📚 Learning: thip 프로젝트에서 record와 vote는 room에 속하지만 feed는 room에 속하지 않는 구조이며, 댓글 작성 시 record/vote에 대해서만 사용자가 해당 room...
Learnt from: seongjunnoh
PR: THIP-TextHip/THIP-Server#101
File: src/main/java/konkuk/thip/comment/application/service/CommentCreateService.java:36-39
Timestamp: 2025-07-26T06:09:00.850Z
Learning: THIP 프로젝트에서 Record와 Vote는 Room에 속하지만 Feed는 Room에 속하지 않는 구조이며, 댓글 작성 시 Record/Vote에 대해서만 사용자가 해당 Room의 참가자인지 검증이 필요하다.

Applied to files:

  • src/main/java/konkuk/thip/record/application/service/RecordSearchService.java
  • src/main/java/konkuk/thip/record/adapter/in/web/response/RecordCreateResponse.java
  • src/main/java/konkuk/thip/vote/application/service/VoteCreateService.java
  • src/main/java/konkuk/thip/record/adapter/in/web/response/RecordSearchResponse.java
  • src/main/java/konkuk/thip/vote/adapter/in/web/response/VoteCreateResponse.java
  • src/main/java/konkuk/thip/record/application/service/RecordCreateService.java
📚 Learning: vote와 voteitem 엔티티는 자주 함께 사용되므로, n+1 문제를 방지하기 위해 양방향 매핑과 fetch join을 고려하는 것이 좋습니다. 특히 기록장 조회 api 등에서...
Learnt from: buzz0331
PR: THIP-TextHip/THIP-Server#75
File: src/main/java/konkuk/thip/vote/adapter/out/persistence/VoteQueryRepositoryImpl.java:50-83
Timestamp: 2025-07-14T14:19:38.796Z
Learning: Vote와 VoteItem 엔티티는 자주 함께 사용되므로, N+1 문제를 방지하기 위해 양방향 매핑과 fetch join을 고려하는 것이 좋습니다. 특히 기록장 조회 API 등에서도 함께 사용될 가능성이 높습니다.

Applied to files:

  • src/main/java/konkuk/thip/vote/application/service/VoteCreateService.java
  • src/main/java/konkuk/thip/vote/application/port/in/dto/VoteCreateResult.java
📚 Learning: thip 프로젝트에서는 "사용자가 방에 속하는지 검증" 로직을 roomparticipantpolicy 도메인 서비스로 캡슐화하여 재사용성을 높이고 비즈니스 로직의 중복을 방지하는 ...
Learnt from: seongjunnoh
PR: THIP-TextHip/THIP-Server#101
File: src/main/java/konkuk/thip/comment/application/service/CommentCreateService.java:36-39
Timestamp: 2025-07-26T06:09:00.850Z
Learning: THIP 프로젝트에서는 "사용자가 방에 속하는지 검증" 로직을 RoomParticipantPolicy 도메인 서비스로 캡슐화하여 재사용성을 높이고 비즈니스 로직의 중복을 방지하는 방식을 선호한다.

Applied to files:

  • src/main/java/konkuk/thip/room/application/service/RoomRecruitCloseService.java
  • src/main/java/konkuk/thip/room/application/service/RoomJoinService.java
  • src/main/java/konkuk/thip/record/application/service/RecordCreateService.java
  • src/main/java/konkuk/thip/room/adapter/in/web/RoomCommandController.java
🔇 Additional comments (38)
src/main/java/konkuk/thip/room/application/port/in/RoomRecruitCloseUseCase.java (1)

3-5: 인터페이스 정의가 올바르게 구현되었습니다.

방 모집 마감 UseCase 인터페이스가 roomId를 반환하도록 수정되어 PR 목표에 부합합니다. 메서드 시그니처와 반환 타입이 적절합니다.

src/main/java/konkuk/thip/room/application/port/in/RoomJoinUseCase.java (2)

4-4: 적절한 import 추가입니다.

RoomJoinResult DTO를 사용하기 위한 import가 올바르게 추가되었습니다.


8-8: 반환 타입 변경이 적절합니다.

void에서 RoomJoinResult로 반환 타입을 변경하여 roomId와 type 정보를 포함한 결과를 반환할 수 있게 되었습니다. 이는 PR의 목표와 일치합니다.

src/main/java/konkuk/thip/room/adapter/in/web/response/RoomRecruitCloseResponse.java (1)

3-9: Response 레코드가 적절히 구현되었습니다.

roomId를 포함한 응답 객체가 올바르게 정의되었고, 정적 팩토리 메서드도 적절히 제공되어 있습니다. Record 패턴을 올바르게 활용했습니다.

src/main/java/konkuk/thip/room/application/port/in/dto/RoomJoinResult.java (1)

3-10: Result DTO가 잘 설계되었습니다.

roomId와 type을 포함한 결과 객체가 적절히 정의되었습니다. 정적 팩토리 메서드를 통한 인스턴스 생성 방식도 좋은 관례를 따르고 있습니다.

src/main/java/konkuk/thip/room/application/service/RoomJoinService.java (3)

7-7: 필요한 import가 올바르게 추가되었습니다.

RoomJoinResult DTO 사용을 위한 import가 적절히 추가되었습니다.


30-30: 메서드 시그니처 변경이 적절합니다.

void에서 RoomJoinResult로 반환 타입을 변경하여 방 참여 결과 정보를 반환할 수 있게 되었습니다.


54-54: 적절한 결과 객체 생성 및 반환입니다.

방의 ID와 요청 타입을 포함한 RoomJoinResult 객체를 올바르게 생성하여 반환하고 있습니다. 이는 PR의 목표인 roomId 반환과 일치합니다.

src/main/java/konkuk/thip/room/adapter/in/web/response/RoomJoinResponse.java (1)

5-15: LGTM! Room 참여 응답 구조가 올바르게 구현되었습니다.

새로운 RoomJoinResponse 레코드가 roomId를 포함하여 적절히 구현되었습니다. 정적 팩토리 메서드를 통한 DTO 변환도 프로젝트 패턴과 일치합니다.

src/main/java/konkuk/thip/room/application/service/RoomRecruitCloseService.java (2)

16-16: 인터페이스 이름 수정이 올바릅니다.

RoomRecruitCloseUsecase에서 RoomRecruitCloseUseCase로 수정되어 naming convention이 맞춰졌습니다.


24-41: roomId 반환 로직이 적절히 추가되었습니다.

메서드가 void에서 Long으로 변경되어 roomId를 반환하도록 수정되었습니다. 기존 비즈니스 로직은 그대로 유지하면서 마지막에 room.getId()를 반환하는 구조가 깔끔합니다.

src/main/java/konkuk/thip/room/adapter/in/web/RoomCommandController.java (4)

12-13: 새로운 응답 클래스 import가 적절히 추가되었습니다.

RoomRecruitCloseResponseRoomJoinResponse import가 올바르게 추가되어 새로운 응답 구조를 지원합니다.


17-17: 인터페이스 참조 이름이 올바르게 수정되었습니다.

RoomRecruitCloseUsecase에서 RoomRecruitCloseUseCase로 수정되어 naming convention이 일관되게 맞춰졌습니다.

Also applies to: 33-33


62-70: 방 참여 API 응답 구조가 개선되었습니다.

기존 void 반환에서 RoomJoinResponse를 반환하도록 변경되어 클라이언트가 roomId와 type 정보를 받을 수 있게 되었습니다. 팩토리 메서드를 통한 변환도 적절합니다.


81-87: 방 모집 마감 API 응답 구조가 개선되었습니다.

기존 void 반환에서 RoomRecruitCloseResponse를 반환하도록 변경되어 클라이언트가 roomId 정보를 받을 수 있게 되었습니다. 서비스에서 반환된 roomId를 적절히 래핑하고 있습니다.

src/main/java/konkuk/thip/vote/application/port/in/dto/VoteCreateResult.java (1)

1-10: 코드 구현이 깔끔하고 적절합니다.

Vote 생성 결과를 담는 record 클래스가 올바르게 구현되었습니다. roomId를 포함하여 응답 일관성을 개선하는 PR 목표에 부합합니다.

src/main/java/konkuk/thip/record/application/service/RecordSearchService.java (1)

107-107: roomId 추가가 적절하게 구현되었습니다.

이미 메서드 스코프에서 사용 가능한 roomId를 응답 빌더에 추가하여 PR 목표에 부합하는 간단하고 올바른 변경입니다.

src/main/java/konkuk/thip/record/adapter/in/web/response/RecordSearchResponse.java (1)

10-10: roomId 필드 추가가 올바르게 구현되었습니다.

응답 구조에 roomId를 추가하여 Room 도메인 관련 응답의 일관성을 개선하는 변경사항이 적절합니다.

src/main/java/konkuk/thip/vote/application/port/in/VoteCreateUseCase.java (1)

4-4: VoteCreateUseCase 구현체가 VoteCreateResult 반환으로 올바르게 업데이트되었습니다

  • src/main/java/konkuk/thip/vote/application/service/VoteCreateService.java 에서
    public VoteCreateResult createVote(VoteCreateCommand command) 로 메서드 시그니처가 변경되어 있습니다.
  • 다른 구현체는 없으며, 모든 인스턴스가 새로운 반환 타입을 사용하도록 반영되었습니다.

해당 변경 사항을 승인합니다.

src/main/java/konkuk/thip/record/application/port/in/RecordCreateUseCase.java (1)

4-4: RecordCreateService에서 새로운 반환 타입을 올바르게 적용했습니다.

RecordCreateUseCase 인터페이스 변경에 맞춰 RecordCreateService.createRecord 메서드가
RecordCreateResult.of(newRecordId, command.roomId())를 반환하도록 구현되어 있습니다.

  • 파일: src/main/java/konkuk/thip/record/application/service/RecordCreateService.java
  • 메서드: public RecordCreateResult createRecord(RecordCreateCommand)

위치한 구현체가 하나뿐이며 모두 기대한 대로 업데이트되었으므로 변경사항을 승인합니다.

src/main/java/konkuk/thip/room/application/service/RoomGetBookPageService.java (1)

31-31: LGTM! roomId 파라미터 추가가 올바르게 구현되었습니다.

메서드 파라미터로 받은 roomId를 응답 객체에 정확히 전달하고 있습니다. 기존 로직에 영향을 주지 않으면서 PR 목표에 부합하는 변경사항입니다.

src/main/java/konkuk/thip/room/adapter/in/web/response/RoomGetBookPageResponse.java (1)

5-10: LGTM! roomId 필드 추가가 올바르게 구현되었습니다.

Record에 roomId 필드가 추가되고 정적 팩토리 메서드도 적절히 업데이트되었습니다. 기존 패턴과 일관성을 유지하면서 깔끔하게 구현되었습니다.

src/main/java/konkuk/thip/record/application/port/in/dto/RecordCreateResult.java (1)

1-10: LGTM! RecordCreateResult DTO가 잘 설계되었습니다.

Record 생성 결과에 recordId와 roomId를 모두 포함하는 깔끔한 DTO입니다. 정적 팩토리 메서드도 적절히 제공되어 있고, THIP 프로젝트의 패턴과 일치합니다.

src/main/java/konkuk/thip/vote/application/service/VoteCreateService.java (3)

9-9: LGTM! VoteCreateResult import가 적절히 추가되었습니다.

새로운 결과 DTO를 위한 import가 올바르게 추가되었습니다.


32-32: LGTM! 반환 타입 변경이 올바르게 적용되었습니다.

메서드 시그니처가 Long에서 VoteCreateResult로 적절히 변경되어 PR 목표에 부합합니다.


57-57: LGTM! 반환문이 새로운 결과 객체를 올바르게 생성합니다.

저장된 voteId와 command에서 가져온 roomId를 모두 포함하는 VoteCreateResult를 반환하도록 적절히 수정되었습니다.

src/main/java/konkuk/thip/record/adapter/in/web/response/RecordCreateResponse.java (3)

3-3: LGTM! RecordCreateResult import가 적절히 추가되었습니다.

새로운 결과 DTO를 사용하기 위한 import가 올바르게 추가되었습니다.


6-7: LGTM! Record 필드에 roomId가 올바르게 추가되었습니다.

기존 recordId와 함께 roomId 필드가 적절히 추가되어 Room 도메인 응답의 일관성을 확보했습니다.


9-14: LGTM! 정적 팩토리 메서드가 올바르게 리팩토링되었습니다.

RecordCreateResult 객체에서 recordId와 roomId를 모두 추출하여 응답 객체를 생성하는 방식으로 깔끔하게 변경되었습니다. 서비스 계층의 변경사항과 잘 연동됩니다.

src/main/java/konkuk/thip/vote/adapter/in/web/response/VoteCreateResponse.java (3)

3-3: 적절한 import 추가

VoteCreateResult import가 새로운 팩토리 메서드에서 사용되므로 올바르게 추가되었습니다.


6-7: roomId 필드 추가가 PR 목표와 일치

Vote 생성 응답에 roomId 필드가 추가되어 Room 도메인 관련 API 응답의 일관성을 확보했습니다.


9-13: 팩토리 메서드 업데이트가 올바름

VoteCreateResult로부터 voteIdroomId를 모두 추출하여 응답 객체를 생성하는 방식이 적절합니다. 서비스 계층의 변경사항과 일관성을 유지합니다.

src/main/java/konkuk/thip/record/application/service/RecordCreateService.java (6)

9-9: 적절한 의존성 import 추가

RecordCreateResultRoomParticipantValidator import가 새로운 기능에 필요한 의존성을 올바르게 추가했습니다.

Also applies to: 14-14


33-33: 도메인 서비스 주입이 프로젝트 컨벤션과 일치

RoomParticipantValidator 주입은 검색된 학습 내용에 따르면 THIP 프로젝트에서 "사용자가 방에 속하는지 검증" 로직을 도메인 서비스로 캡슐화하여 재사용성을 높이는 방식과 일치합니다.


38-38: 메서드 반환 타입 변경이 PR 목표 달성

RecordCreateResult 반환으로 변경하여 recordIdroomId를 모두 포함한 응답을 제공할 수 있게 되었습니다. Room 도메인 관련 API의 일관성을 확보하는 핵심 변경사항입니다.


39-39: Room 참가자 검증 추가가 도메인 규칙과 일치

Record는 Room에 속하는 도메인이므로 사용자가 해당 Room의 참가자인지 검증하는 로직 추가가 적절합니다. 검색된 학습 내용에 따르면 Record에 대해서는 Room 참가자 검증이 필요합니다.


57-57: 메서드명 개선

validateUserRoom에서 validateRoomParticipant로 변경하여 메서드가 수행하는 검증의 의미를 더 명확하게 표현했습니다.


66-66: 결과 객체 반환으로 일관성 확보

RecordCreateResult.of(newRecordId, command.roomId())로 변경하여 생성된 레코드 ID와 Room ID를 모두 포함한 결과를 반환합니다. 이는 응답 계층까지 roomId 정보를 전달하는 데 필요한 변경사항입니다.

✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch hotfix/#126-room-response

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Member

@hd0rable hd0rable left a comment

Choose a reason for hiding this comment

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

수고하셨습니다!! 그런데 혹시 비공개 방 비밀번호 입력시에는 roomId가 필요없을까요?? 아니면 어차피 제가 비공개 비밀번호 입력 수정해야해서 제가 해도될것같습니닷!!
노션에는 반영이안되어있는것같아서 노션도 같이 수정해주시면 감사하겠습니다!!
image

Copy link
Collaborator

@seongjunnoh seongjunnoh left a comment

Choose a reason for hiding this comment

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

확인해보니 누락된 부분 없이 roomId 모두 반환해주는것 같습니다!! 고생하셨습니다!

@buzz0331 buzz0331 merged commit 192b2ef into develop Aug 3, 2025
2 checks passed
@buzz0331 buzz0331 deleted the hotfix/#126-room-response branch August 3, 2025 16:03
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.

[THIP2025-175] [hotfix] Room 도메인 관련 response 모두 roomId 반환

3 participants