-
Notifications
You must be signed in to change notification settings - Fork 0
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
🏄 :: (Meogo-13) modif review #15
Conversation
Walkthrough변경 사항은 Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant ReviewController
participant ModifyReviewService
participant ReviewRepository
participant UserFacade
User->>ReviewController: PATCH /modify
ReviewController->>ModifyReviewService: modifyReview(reviewId, request)
ModifyReviewService->>UserFacade: getCurrentUser()
ModifyReviewService->>ReviewRepository: findById(reviewId)
ModifyReviewService->>UserFacade: getUserById(review.userId)
ModifyReviewService->>ReviewRepository: save(updatedReview)
ReviewController->>User: Response
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? TipsChatThere are 3 ways to chat with CodeRabbit:
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)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
Outside diff range, codebase verification and nitpick comments (1)
src/main/kotlin/org/meogo/domain/review/service/CreateReviewService.kt (1)
Line range hint
17-28
: 사용자 ID 널 가능성 처리
user.id
가 널일 가능성을 고려하여 이를 처리하는 로직을 추가하는 것이 좋습니다. 현재 코드에서는user.id!!
를 사용하여 널이 아님을 단언하고 있지만, 이는 런타임 예외를 발생시킬 수 있습니다.- userId = user.id!!, + userId = user.id ?: throw IllegalStateException("User ID is null")
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (12)
- src/main/kotlin/org/meogo/domain/review/domain/Review.kt (1 hunks)
- src/main/kotlin/org/meogo/domain/review/exception/UserMisMatchException.kt (1 hunks)
- src/main/kotlin/org/meogo/domain/review/presentation/ReviewController.kt (3 hunks)
- src/main/kotlin/org/meogo/domain/review/presentation/dto/request/ModifyReviewRequest.kt (1 hunks)
- src/main/kotlin/org/meogo/domain/review/presentation/dto/request/ReviewRequest.kt (1 hunks)
- src/main/kotlin/org/meogo/domain/review/presentation/dto/response/ReviewResponse.kt (1 hunks)
- src/main/kotlin/org/meogo/domain/review/repository/ReviewRepository.kt (1 hunks)
- src/main/kotlin/org/meogo/domain/review/service/CreateReviewService.kt (1 hunks)
- src/main/kotlin/org/meogo/domain/review/service/ModifyReviewService.kt (1 hunks)
- src/main/kotlin/org/meogo/domain/review/service/QueryAllBySchoolIdService.kt (1 hunks)
- src/main/kotlin/org/meogo/domain/user/facade/UserFacade.kt (2 hunks)
- src/main/kotlin/org/meogo/global/error/exception/ErrorCode.kt (1 hunks)
Additional comments not posted (28)
src/main/kotlin/org/meogo/domain/review/presentation/dto/response/ReviewResponse.kt (2)
8-8
: 별점 속성의 타입 변경 승인
star
속성의 타입이Long
에서Float
으로 변경되었습니다. 이 변경은 별점을 소수점으로 표현할 수 있게 하여 정밀도를 높이는 효과가 있습니다.
8-8
: 데이터베이스 및 클라이언트 코드에 대한 영향 검증 요청
star
속성의 타입 변경으로 인해 데이터베이스 스키마와 클라이언트 사이드 코드에 영향을 줄 수 있습니다. 데이터베이스의 변경 사항과 API 문서, 클라이언트 코드에서 이 변경이 제대로 반영되었는지 확인이 필요합니다.src/main/kotlin/org/meogo/domain/review/exception/UserMisMatchException.kt (3)
1-1
: 패키지 선언 확인패키지 경로가 적절한지 확인해야 합니다. 이 경로가 프로젝트의 나머지 부분과 일관되게 구성되어 있는지 검토하는 것이 중요합니다.
3-4
: 임포트 문 검토
ErrorCode
와MeogoException
클래스가 올바르게 임포트되었는지 확인합니다. 이들 클래스의 경로와 접근성이 프로젝트의 다른 부분과 일치하는지 검증해야 합니다.
6-8
: 예외 객체 정의 검토
UserMisMatchException
객체가MeogoException
을 상속받아 구현되었습니다. 사용된ErrorCode.USER_MISMATCH
가 이 상황에 적합한지 확인해야 합니다. 또한, 객체 선언 방식이 이 예외 상황에 적절한지 검토할 필요가 있습니다.src/main/kotlin/org/meogo/domain/review/presentation/dto/request/ReviewRequest.kt (2)
9-9
: 별점 속성의 데이터 유형 변경 승인별점 속성의 데이터 유형이
Long
에서Float
으로 변경되었습니다. 이 변경은 리뷰 시스템의 정밀도를 향상시키기 위해 소수점 별점을 허용합니다. 변경 사항을 승인합니다.
9-9
: 변경된 데이터 유형의 영향 검증 요청별점 속성의 데이터 유형 변경으로 인해 데이터베이스 저장, API 계약, 프론트엔드 컴포넌트 등 애플리케이션의 다른 부분에 미치는 영향을 검증해야 합니다.
다음 스크립트를 실행하여 변경된 데이터 유형의 영향을 검증하세요:
src/main/kotlin/org/meogo/domain/review/presentation/dto/request/ModifyReviewRequest.kt (3)
1-1
: 패키지 선언 확인패키지 선언이 적절하게 이루어졌습니다.
3-3
: 필요한 라이브러리 임포트
javax.validation.constraints.Size
는content
필드의 유효성 검사에 사용됩니다. 적절한 임포트입니다.
5-10
: 데이터 클래스 구조 검토
ModifyReviewRequest
클래스는 리뷰 수정을 위한 데이터를 정의합니다. 각 필드는 다음과 같습니다:
content
: 리뷰 내용을 나타내며, 최소 1자에서 최대 300자까지 입력 가능합니다.star
: 별점을 나타내는Float
타입입니다. 별점 시스템에 적합한 타입 선택입니다.image
: 이미지 URL을 선택적으로 포함할 수 있는String?
타입입니다. 이미지가 없는 경우를 고려하여 nullable로 선언된 것이 적절합니다.전반적으로 클래스 구조가 명확하고, 필드 유효성 검사가 적절히 구현되어 있습니다.
src/main/kotlin/org/meogo/domain/review/repository/ReviewRepository.kt (1)
11-11
: findById 메소드 추가 승인새로운
findById(id: Long): Review?
메소드는 ID로 리뷰를 검색할 수 있게 해주며, 리뷰가 없을 경우 null을 반환할 수 있도록 nullable 타입을 사용하는 것이 적절합니다. 이 변경은 인터페이스의 기능을 적절히 확장하며, 기존 메소드와 잘 통합되어 있습니다.src/main/kotlin/org/meogo/global/error/exception/ErrorCode.kt (1)
10-10
: USER_MISMATCH 항목 추가 승인새로운 에러 코드
USER_MISMATCH
가 401 상태 코드와 "User Mismatch" 메시지와 함께 추가되었습니다. 이 변경은 사용자 자격 증명 또는 식별자와 관련된 불일치 시나리오에 대해 더 세밀한 오류 보고 및 처리를 가능하게 합니다. 기존 패턴을 따르며, 에러 코드의 일관성과 명확성을 유지하고 있습니다.src/main/kotlin/org/meogo/domain/user/facade/UserFacade.kt (2)
20-21
: 명시적인 반환 유형 정의를 통한 타입 안전성 및 명확성 향상
getUserByAccountId
함수에User
반환 유형을 명시적으로 정의함으로써 코드의 가독성과 안정성이 향상되었습니다. 이 변경은 Kotlin의 최선의 관행에 부합합니다.
23-24
: 새로운 사용자 식별 함수 추가
getUserById
함수는 UUID를 사용하여 사용자를 식별하는 새로운 방법을 제공합니다. 이는 더욱 견고한 사용자 관리 기능을 가능하게 합니다.userRepository.findById(id)
를 사용하여 사용자를 찾고, 사용자가 없는 경우UserNotFoundException
을 발생시키는 방식은 적절합니다.src/main/kotlin/org/meogo/domain/review/service/ModifyReviewService.kt (1)
10-14
: 클래스 정의 및 주입 승인
ModifyReviewService
클래스는@Service
어노테이션을 사용하여 서비스 계층 컴포넌트로 적절히 표시되었습니다. 또한,ReviewRepository
와UserFacade
를 생성자 주입하는 방식은 의존성 주입을 통한 결합도 감소와 테스트 용이성 측면에서 모범적인 사례입니다.src/main/kotlin/org/meogo/domain/review/domain/Review.kt (7)
18-18
: 날짜 속성의 null 허용 여부 확인
date
속성에@Column(nullable = false)
어노테이션이 추가되었습니다. 이 변경은date
가 항상 필요함을 보장합니다.
21-21
: 사용자 ID 컬럼 정의 확인
userId
속성에 대한 컬럼 정의가BINARY(16)
으로 명시되어 있습니다. 이는 UUID를 효율적으로 저장하기 위한 변경으로 보입니다.
24-24
: 학교 ID 속성의 null 허용 여부 확인
schoolId
속성에@Column(name = "school_id", nullable = false)
어노테이션이 추가되어 null을 허용하지 않습니다. 이는 학교 ID가 항상 필요함을 보장합니다.
27-29
: 별점 속성의 변경 사항 검토
star
속성이Long
에서Float
로 변경되었으며,var
로 선언되어 값의 수정이 가능해졌습니다. 또한@Column(nullable = false)
어노테이션이 추가되어 별점이 항상 필요함을 보장합니다.
30-32
: 내용 속성의 변경 사항 검토
content
속성이val
에서var
로 변경되어 값의 수정이 가능해졌습니다.@Column(nullable = false)
어노테이션이 추가되어 내용이 항상 필요함을 보장합니다.
33-34
: 사진 속성의 변경 사항 검토
picture
속성이val
에서var
로 변경되어 값의 수정이 가능해졌습니다. 이 변경은 리뷰에 사진을 추가하거나 변경할 수 있는 유연성을 제공합니다.
36-45
: 리뷰 업데이트 메소드 검토새로 추가된
updateReview
메소드는content
,star
,picture
속성을 업데이트합니다. 이 메소드는 객체의 상태를 변경하고 업데이트된 인스턴스를 반환합니다. 메소드 구현이 명확하며, 리뷰의 세부 사항을 업데이트하는 명확한 메커니즘을 제공합니다.src/main/kotlin/org/meogo/domain/review/service/CreateReviewService.kt (1)
Line range hint
17-28
: 사용자 이름 필드 제거 확인
Review
객체에서userName
필드가 제거되었습니다. 이 변경사항이 다른 애플리케이션 부분에 영향을 미치지 않는지 확인이 필요합니다.userName
을 사용하는 다른 코드 부분도 업데이트되었는지 검토해 주세요.src/main/kotlin/org/meogo/domain/review/service/QueryAllBySchoolIdService.kt (2)
13-14
: 생성자에 UserFacade 추가 승인UserFacade를 생성자에 추가함으로써 사용자 데이터 검색의 캡슐화와 모듈화가 향상되었습니다. 이는 의존성 역전 원칙을 준수하며, 서비스가 사용자 데이터 검색의 구체적인 구현에 직접 의존하지 않도록 합니다.
24-24
: queryAllBySchoolId 메소드 수정 승인메소드에서
userFacade.getUserById(review.userId).name
를 사용하여 사용자 이름을 검색하도록 변경한 것은 데이터 캡슐화를 강화하고 객체 지향 설계를 개선합니다. 이 변경으로 유지보수성이 향상될 수 있으나,UserFacade
의 사용이 성능에 미치는 영향을 검토할 필요가 있습니다.성능 영향을 확인하기 위해 다음 스크립트를 실행하세요:
src/main/kotlin/org/meogo/domain/review/presentation/ReviewController.kt (3)
4-4
: 새로운 기능을 위한 필요한 import 추가
ModifyReviewRequest
와ModifyReviewService
를 import하는 것은 새로운 리뷰 수정 기능을 위해 필요합니다.Also applies to: 7-7
23-24
: 새로운 서비스 추가 확인
ModifyReviewService
가 클래스 생성자에 주입되어 새로운 리뷰 수정 기능을 지원합니다.
37-39
: 새로운 수정 엔드포인트 추가 확인새로운
@PatchMapping
엔드포인트가 리뷰 수정 기능을 위해 추가되었습니다.review_id
와ModifyReviewRequest
객체를 받아 처리합니다.
ModifyReviewRequest
객체의 유효성 검사가 필요할 수 있습니다. 유효성 검사 로직을 추가하는 것이 좋을 것 같습니다.
src/main/kotlin/org/meogo/domain/review/service/ModifyReviewService.kt
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (5)
- src/main/kotlin/org/meogo/domain/review/exception/ReviewNotFoundException.kt (1 hunks)
- src/main/kotlin/org/meogo/domain/review/repository/ReviewRepository.kt (1 hunks)
- src/main/kotlin/org/meogo/domain/review/service/ModifyReviewService.kt (1 hunks)
- src/main/kotlin/org/meogo/domain/review/service/QueryAllBySchoolIdService.kt (1 hunks)
- src/main/kotlin/org/meogo/global/error/exception/ErrorCode.kt (1 hunks)
Files skipped from review as they are similar to previous changes (1)
- src/main/kotlin/org/meogo/domain/review/service/ModifyReviewService.kt
Additional comments not posted (9)
src/main/kotlin/org/meogo/domain/review/exception/ReviewNotFoundException.kt (2)
1-1
: 패키지 선언 승인패키지 경로가 명확하며 적절하게 구조화되어 있습니다.
3-4
: 임포트 승인임포트된
ErrorCode
와MeogoException
은 이 예외 정의에 필수적입니다.src/main/kotlin/org/meogo/domain/review/repository/ReviewRepository.kt (2)
9-10
: 필요한 변경 사항을 승인합니다.
findAllBySchoolId
메소드의 반환 타입이 nullable로 변경되었습니다. 이는 학교 ID에 대한 리뷰가 없는 경우를 처리하기 위한 적절한 변경입니다. 메소드가 null을 반환할 수 있는 상황에 대한 문서화를 추가하는 것이 좋을 것입니다.
11-11
: 새로운 메소드 추가를 승인합니다.
findById
메소드가 추가되어 ID로 리뷰를 직접 검색할 수 있게 되었습니다. 이는 많은 애플리케이션에서 요구되는 일반적인 기능입니다. 메소드가 null을 반환할 수 있는 상황에 대한 문서화를 추가하는 것이 좋을 것입니다.src/main/kotlin/org/meogo/global/error/exception/ErrorCode.kt (2)
10-10
: 사용자 불일치 오류 코드 추가 승인
USER_MISMATCH
오류 코드가 적절하게 추가되었습니다. 401 상태 코드는 인증 오류에 적합하며, "User Mismatch" 메시지는 오류의 성격을 명확하게 설명합니다.
13-13
: 리뷰 미발견 오류 코드 추가 승인
REVIEW_NOT_FOUND
오류 코드가 적절하게 추가되었습니다. 404 상태 코드는 찾을 수 없는 리소스에 대한 오류를 나타내는 데 적합하며, "Review not found" 메시지는 사용자에게 명확한 정보를 제공합니다.src/main/kotlin/org/meogo/domain/review/service/QueryAllBySchoolIdService.kt (3)
5-5
: UserFacade 임포트 승인새로운 의존성
UserFacade
가 정상적으로 추가되었습니다.
13-14
: 생성자 수정 승인
UserFacade
를 생성자에 추가하여 사용자 정보를 더 안전하게 관리할 수 있게 되었습니다.
19-25
: 메소드 변경 승인 및 성능 검토 권장
queryAllBySchoolId
메소드가UserFacade
를 사용하여 사용자 이름을 가져오는 방식으로 변경되었습니다. 이는 데이터 캡슐화를 향상시키고 유지보수성을 높입니다.성능 관련하여,
userFacade.getUserById
호출이 각 리뷰마다 발생하므로, 사용자 수가 많을 경우 성능 저하가 발생할 수 있습니다. 이 부분에 대한 추가적인 성능 테스트를 권장합니다.Also applies to: 35-35
close #13
Summary by CodeRabbit
New Features
변경 사항
star
및content
속성을 가변으로 변경하여 수정 가능하도록 개선.ReviewRequest
및ReviewResponse
에서star
속성을Float
로 변경하여 정밀한 평점 표현 가능.Review
클래스에서userName
속성 제거 및schoolId
속성 추가.버그 수정