-
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
Refactor: 챌린지 조회 시 챌린지 목표 값까지 같이 리턴할 수 있게 수정 #318
Conversation
- findAllIsNotDefeatYesterday, findAllChallenges 함수 삭제 - 서비스단 재 구성으로 서비스단 함수 삭제 및 컨트로러 주석화
- getChallenges 함수 리턴값이 챌린지 목표 값을 가져오게 재 구성 = 필요한 리스펀스 필드 추가
condition.goalMetricType().getActualValue(runningRecords.getFirst()))); | ||
} | ||
} | ||
} |
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.
함수에 관한 코멘트
if (runningRecords.isEmpty())
와 밑에서 if (!runningRecords.isEmpty())
를 사용하고 있어요
→ if else 로 allChallengesWithConditions
변수를 처리한 다음에, 밑에서 shuffle하고 결과값을 반환하면 어떨까요?
if (runningRecords.isEmpty()) {
allChallengesWithConditions.removeIf(challenge ->
challenge.challenge().isDefeatYesterdayChallenge()
);
} else {
allChallengesWithConditions.stream()
.filter(challenge -> challenge.challenge().isDefeatYesterdayChallenge())
.forEach(challenge -> challenge.conditions().forEach(condition ->
condition.registerComparisonValue(
condition.goalMetricType().getActualValue(runningRecords.getFirst())
)
));
}
Random randomWithSeed = new Random(todayMidnight.toEpochSecond());
Collections.shuffle(allChallengesWithConditions, randomWithSeed);
return allChallengesWithConditions.stream().limit(2).toList();
allChallengesWithConditions = allChallengesWithConditions.stream() | ||
.filter(challengeWithCondition -> | ||
!challengeWithCondition.challenge().isDefeatYesterdayChallenge()) |
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.
removeIf()
를 사용하면 변수 대입이 없어서 좋을 것 같아요
allChallengesWithConditions = allChallengesWithConditions.stream() | |
.filter(challengeWithCondition -> | |
!challengeWithCondition.challenge().isDefeatYesterdayChallenge()) | |
allChallengesWithConditions.removeIf(challenge -> | |
challenge.challenge().isDefeatYesterdayChallenge() | |
); |
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.
removeIf()
가 있군요! 좋은거 같아요!
for (ChallengeWithCondition challenge : randomChallengeWithConditions) { | ||
if (challenge.challenge().isDefeatYesterdayChallenge()) { | ||
// 어제의 기록과 관련된 챌린지면, 챌린지 비교할 값(성공 유무를 위한 목표 값) 재등록 | ||
challenge | ||
.conditions() | ||
.forEach(condition -> condition.registerComparisonValue( | ||
condition.goalMetricType().getActualValue(runningRecords.getFirst()))); | ||
} | ||
} |
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.
!runningRecords.isEmpty()
일 때 for 문이나 스트림 중에 사용하면 좋을 것 같은데, 스트림도 괜찮은 것 같아서 예시로 사용해봤어요
보시고 성희님이 더 읽기 쉬운 방식으로 고르시면 될 것 같아요!
for (ChallengeWithCondition challenge : randomChallengeWithConditions) { | |
if (challenge.challenge().isDefeatYesterdayChallenge()) { | |
// 어제의 기록과 관련된 챌린지면, 챌린지 비교할 값(성공 유무를 위한 목표 값) 재등록 | |
challenge | |
.conditions() | |
.forEach(condition -> condition.registerComparisonValue( | |
condition.goalMetricType().getActualValue(runningRecords.getFirst()))); | |
} | |
} | |
allChallengesWithConditions.stream() | |
.filter(challenge -> challenge.challenge().isDefeatYesterdayChallenge()) | |
.forEach(challenge -> challenge.conditions().forEach(condition -> | |
condition.registerComparisonValue( | |
condition.goalMetricType().getActualValue(runningRecords.getFirst()) | |
) | |
)); |
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.
위에서 재원님이 if (runningRecords.isEmpty())
관해서 말한 대로 if else로 처리한 다음에 스트림으로 처리하는게 더 좋아보이네요!
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.
고생하셨습니다 👍👍
🔗 이슈 연결
🚀 구현한 API
💡 반영할 내용 및 변경 사항 요약
어제의~
와 관련된 챌린지도 같이 조회해서 랜덤으로 2개 리턴어제의~
와 관련된 챌린지를 제외어제의~
와 관련된 챌린지가 포합되었을 경우, 사용자의 어제의 러닝기록(첫번째로 조회되는)을 이용해서 챌린지 목표값 리턴할 수 있게 함🔍 리뷰 요청/참고 사항