Skip to content

Commit

Permalink
[refactor] #98 게시글 리스트 조회 factory 패턴으로 리팩토링
Browse files Browse the repository at this point in the history
  • Loading branch information
qogustj committed Aug 28, 2024
1 parent 43b3540 commit 30ca632
Showing 1 changed file with 6 additions and 103 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,8 @@ public void deletePost(String boardCode, Long postId) {

public PostListRes<?> searchPost(int page, int take, String q, String boardCode, String groupCode, String memberCode, String category) {
Board board = boardReader.getBoardWithBoardCode(boardCode);

//factory 사용 로직
BoardImpl boardImpl = BoardFactory.createBoard(boardCode, board.getId());
Pageable pageable = PageInfo.of(page, take);

Expand All @@ -283,35 +285,15 @@ public PostListRes<?> searchPost(int page, int take, String q, String boardCode,

PageInfo pageInfo = PageInfo.of(postList);

QuadFunction<Post, List<PostFile>, Integer, User, ? extends PostListResDto> responseFunction = postResponseMap.get(board.getName());

if (responseFunction == null) {
throw new IllegalArgumentException("Unknown board type: " + board.getName());
}

List<? extends PostListResDto> responseList = postList.getContent().stream()
.map(post -> {
User user = null;
Integer likeCount = null;
switch (board.getName()) {
case "공지사항게시판":
user = userReader.getUserWithId(post.getUserId());
return responseFunction.apply(post, null, null,user);
case "분실물게시판":
case "제휴게시판":
case "감사기구게시판":
case "자료집":
return responseFunction.apply(post, null, null, null);
case "청원게시판":
likeCount = postReactionReader.countPostReactionsByType(post.getId(), "like");
return responseFunction.apply(post, null, likeCount,null);
default:
throw new EntityNotFoundException(String.valueOf(POST_NOT_FOUND));
}
PostListResponseFactory factory = PostResponseFactoryProvider.getFactory(board.getName());
return factory.createResponse(post, postReader, postReactionReader, userReader);
})
.toList();

return PostListRes.of(responseList, pageInfo);

}

public TopLikedPostListResponse getTopLikedPostList(int page, int take, String boardCode) {
Expand All @@ -321,83 +303,4 @@ public TopLikedPostListResponse getTopLikedPostList(int page, int take, String b

return TopLikedPostListResponse.of(simplePostDtoList.getContent(), pageInfo);
}
}
//스위치 사용 로직
/*
package ussum.homepage.application.post.service;
import jakarta.persistence.EntityNotFoundException;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import ussum.homepage.application.post.service.dto.response.postList.*;
import ussum.homepage.domain.post.Board;
import ussum.homepage.domain.post.Post;
import ussum.homepage.domain.post.service.BoardReader;
import ussum.homepage.domain.post.service.PostReader;
import ussum.homepage.global.common.PageInfo;
import java.util.List;
import static ussum.homepage.global.error.status.ErrorStatus.POST_NOT_FOUND;
@Service
@RequiredArgsConstructor
public class PostManageService {
private final BoardReader boardReader;
private final PostReader postReader;
public PostListRes<?> getPostList(int page, int take, String boardCode) {
Board board = boardReader.getBoardWithBoardCode(boardCode);
Pageable pageable = PageInfo.of(page, take);
Page<Post> postList = postReader.getPostListByBoardId(board.getId(), pageable);
PageInfo pageInfo = PageInfo.of(postList);
switch (board.getName()) {
case "공지사항":
return getNoticePostList(postList, pageInfo);
case "분실물":
return getLostPostList(postList, pageInfo);
case "제휴":
return getPartnerPostList(postList, pageInfo);
case "감사기구":
return getAuditPostList(postList, pageInfo);
case "청원":
// return getPetitionPostList(postList, pageInfo);
default:
throw new EntityNotFoundException(String.valueOf(POST_NOT_FOUND));
}
}
private PostListRes<NoticePostResponse> getNoticePostList(Page<Post> postList, PageInfo pageInfo) {
List<NoticePostResponse> responseList = postList.getContent().stream()
.map(NoticePostResponse::of)
.toList();
return PostListRes.of(responseList, pageInfo);
}
private PostListRes<LostPostResponse> getLostPostList(Page<Post> postList, PageInfo pageInfo) {
List<LostPostResponse> responseList = postList.getContent().stream()
.map(LostPostResponse::of)
.toList();
return PostListRes.of(responseList, pageInfo);
}
private PostListRes<PartnerPostResponse> getPartnerPostList(Page<Post> postList, PageInfo pageInfo) {
List<PartnerPostResponse> responseList = postList.getContent().stream()
.map(PartnerPostResponse::of)
.toList();
return PostListRes.of(responseList, pageInfo);
}
private PostListRes<AuditPostResponseDto> getAuditPostList(Page<Post> postList, PageInfo pageInfo) {
List<AuditPostResponseDto> responseList = postList.getContent().stream()
.map(AuditPostResponseDto::of)
.toList();
return PostListRes.of(responseList, pageInfo);
}
}
*/
}

0 comments on commit 30ca632

Please sign in to comment.