-
Notifications
You must be signed in to change notification settings - Fork 1
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/#113 로그 요청 목록 유효성 검사 기능 구현 #115
Conversation
- ValidLogRequests 어노테이션 생성
- LogRequestsValidator 클래스 생성 - 빈 요청, 개별 요청, 전체 요청의 유효성 검사 로직 구현 - 유효하지 않은 요청 필터링 및 오류 메시지 생성 기능 추가
- 빈 요청 시 400 에러 반환 테스트 - 모든 요청 무효 시 400 에러 반환 테스트 - 일부 요청만 유효한 경우 정상 처리 테스트 - 전체 요청 유효 시 정상 처리 테스트
- data가 빈 줄일 때에 대한 예외상황을 허용하도록 변경
- @ValidLogRequests 어노테이션을 LogController의 saveLogs 메서드에 적용
Risk Level 2 - /home/runner/work/Team5-Guys/Team5-Guys/logbat/src/test/java/info/logbat/domain/log/presentation/LogControllerTest.java The test cases are well-structured. However, consider using constants for repeated strings like the expected log level and data to improve maintainability. Example: private static final String EXPECTED_LOG_LEVEL = \"INFO\";
private static final String EXPECTED_LOG_DATA = \"테스트_로그_데이터\"; Risk Level 2 - /home/runner/work/Team5-Guys/Team5-Guys/logbat/src/main/java/info/logbat/domain/log/presentation/LogController.java The addition of the @ValidLogRequests annotation is a good practice for validating incoming requests. However, ensure that the LogService's saveLogs method handles potential null values for appKey and requests gracefully. Consider adding null checks before processing to avoid NullPointerExceptions. Risk Level 3 - /home/runner/work/Team5-Guys/Team5-Guys/logbat/src/main/java/info/logbat/domain/log/presentation/validation/LogRequestsValidator.java The isValid method could be improved for readability. Instead of using multiple return statements, consider using a single return statement at the end. This can help in understanding the flow of the method better. Example: return !isEmptyRequest(requests, context) && !requests.isEmpty(); 📝🔍⚙️ Powered by Code Review GPT |
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.
직접 Validator로 Validating 하면서 실패 에러를확인 할 수 있겠군요!
코드 잘 봤습니다!
코멘트 한번 검토부탁드리겠습니다
return requests.stream() | ||
.filter(request -> isValidRequest(request, requests.indexOf(request), errorMessages)) | ||
.toList(); |
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.
indexOf
의 시간복잡도가 O(N)이라서 이렇게 직접 반복문을 돌 수 있도록 수정하는게 어떨까요?
아니면, index의 역할이 에러 message에만 추가하는 목적으로 보여서 index를 사용하지 않고 message를 추가하는 편도 좋겠어요!
return requests.stream() | |
.filter(request -> isValidRequest(request, requests.indexOf(request), errorMessages)) | |
.toList(); | |
List<CreateLogRequest> validRequests = new ArrayList<>(); | |
for (int i = 0; i < requests.size(); i++) { | |
CreateLogRequest request = requests.get(i); | |
if (isValidRequest(request, i, errorMessages)) { | |
validRequests.add(request); | |
} | |
} | |
return validRequests; |
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.
좋습니다~~
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.
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.
테스트 좋아요 👍🏻
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.
@LuizyHub 이 남겨둔 리뷰 확인 후 체크해주면 좋을 것 같습니다
- requests로 stream을 돌리지 않고 ,IntStream을 통해 index 기반 접근하여 반환하도록 수정했습니다.
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.
배열연산 수정된 부분 잘 확인했습니다!
수고하셨습니다~
* feat: 로그 요청 유효성 검사를 위한 커스텀 어노테이션 추가 - ValidLogRequests 어노테이션 생성 * feat: 로그 요청 목록 유효성 검사 기능 구현 - LogRequestsValidator 클래스 생성 - 빈 요청, 개별 요청, 전체 요청의 유효성 검사 로직 구현 - 유효하지 않은 요청 필터링 및 오류 메시지 생성 기능 추가 * test: 여러 로그 POST 요청에 대한 테스트 케이스 추가 - 빈 요청 시 400 에러 반환 테스트 - 모든 요청 무효 시 400 에러 반환 테스트 - 일부 요청만 유효한 경우 정상 처리 테스트 - 전체 요청 유효 시 정상 처리 테스트 * test: 빈 줄을 허용하는 비즈니스 로직 변화로 테스트 코드 수정 - data가 빈 줄일 때에 대한 예외상황을 허용하도록 변경 * feat: LogController에 로그 요청 유효성 검사 적용 - @ValidLogRequests 어노테이션을 LogController의 saveLogs 메서드에 적용 * refactor: indexOf 연산을 사용하지 않기 위한 리팩토링 - requests로 stream을 돌리지 않고 ,IntStream을 통해 index 기반 접근하여 반환하도록 수정했습니다.
🚀 작업 내용
LogRequestsValidator 로직 흐름
빈 요청 검사
개별 요청 유효성 검사
유효한 요청 필터링
최종 검사
주요 시나리오 처리
모든 요청이 유효한 경우
일부 요청만 유효한 경우
모든 요청이 유효하지 않은 경우
빈 요청 목록이 전달된 경우
📸 이슈 번호
👀 Focus Commits [Optional]
✍ 궁금한 점