-
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
[feat] #31 repost 기능 구현 및 코드 통합 #31
The head ref may contain hidden characters: "feat/#27/repost-\uAE30\uB2A5"
Conversation
# Conflicts: # src/main/java/com/leets/X/domain/user/domain/User.java
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.
Repost와 Post 개념이 어려워서 구현하기 힘드셨을텐데 수고 많으셨습니다.
코드 주기적으로 보면서 리뷰 추가하겠습니다!
public List<ParentPostResponseDto> getFollowingPost(String email) { | ||
User user = userService.find(email); | ||
|
||
// 자신의 게시물과 리포스트 가져오기 | ||
List<ParentPostResponseDto> myPosts = getUserPosts(user, true); | ||
List<ParentPostResponseDto> myReposts = getUserReposts(user, true); | ||
|
||
// 팔로잉한 사용자들의 게시물과 리포스트 가져오기 | ||
List<ParentPostResponseDto> followingPosts = getFollowingUsersPosts(user); | ||
List<ParentPostResponseDto> followingReposts = getFollowingUsersReposts(user); | ||
|
||
// 모든 게시물 합치고 정렬 | ||
List<ParentPostResponseDto> allPosts = mergeAndSortPosts(myPosts, myReposts, followingPosts, followingReposts); | ||
|
||
return allPosts; | ||
} |
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.
repost의 핵심 비지니스 로직을 관심사 별로 잘 구분하신거 같습니다.
특히 각각 조회해오는 post와 repost를 합쳐 시간순 정렬까지 잘 고려하신거 같습니다!
import java.util.stream.Collectors; | ||
|
||
@Component | ||
public class PostMapper { |
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.
기존에는 dto의 from이나 entity의 of 정적 메서드를 사용했다면,
post와 repost를 공통으로 사용하는 dto 변환과 관련 로직을 위해 Mapper를 두어 관심사를 분리한건가요??
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.
기존 PostResponseDto 내부 로직이 많아짐에 따라 dto의 역할을 넘어서는 책임이 생긴다고 판단해 dto를 만드는 커스텀 매퍼를 구현했습니다
또 post의 경우 자기 참조를 진행 중이라 dto로 만들어 반환하는 과정에 재귀적인 로직이 필요해 책임을 이전했습니다!
기존에 post 코드에서 변경사항이 있지만, x 시스템상에 맞게 잘 수정되었다고 생각해요. |
1. 무슨 이유로 코드를 변경했나요?
2. 어떤 위험이나 장애를 발견했나요?
3. 관련 스크린샷을 첨부해주세요.
4. 완료 사항
5. 추가 사항