필터가 있었으면 좋겠다는 피드백이 있어서 적용해보았다.
조회수 순, 댓글 많은 순으로 게시글을 조회하는 필터를 만들어 보았는데, 잘 된 건지는 모르겠다ㅎㅎ..
서버에서 필터 기능을 만드는 것은 어렵지 않았다.
단순히 게시글을 어떤 기준으로 조회할 지 repository나 service에서 가공해주고 클라이언트에게 반환해주면 됐기 때문이당
| PostRepository.java
public interface PostRepository extends JpaRepository<Post, Long> {
    List<Post> findAllByOrderByHitsDesc();
    ...| PostService.java
// 조회수 순, 게시글 목록 조회 (모집 마감 포함)
public ResponseEntity<List<PostReadResponseDto>> readHitsPostList() {
    List<Post> hitsPosts = postRepository.findAllByOrderByHitsDesc();
    List<PostReadResponseDto> hitsPostList = new ArrayList<>();
    for (Post post : hitsPosts) {
        hitsPostList.add(PostReadResponseDto.builder()
                .status(StatusMessage.SUCCESS)
                .id(post.getId())
                .title(post.getTitle())
                .content(post.getContent())
                .meetingType(post.getMeetingType())
                .contact(post.getContact())
                .period(post.getPeriod())
                .recruitmentState(post.isRecruitmentState())
                .hits(post.getHits())
                .postDate(post.getCreateDate())
                .writer(post.getMember().getNickname())
                .build()
        );
    }
    return new ResponseEntity<>(hitsPostList, HttpStatus.valueOf(StatusCode.SUCCESS));
}| PostController.java
// 조회수순 게시글 목록 조회 (모집 마감 포함)
@GetMapping("/post/list/hits")
public ResponseEntity<List<PostReadResponseDto>> readHitsPostList() {
    return postService.readHitsPostList();
}
'인기순'으로 드롭다운값을 변경하면, 조회수가 많은 게시글부터 조회된다
댓글이 많이 작성된다는 건 그만큼 사람들이 관심을 가진다는 것이기에 댓글 많은 순으로 게시글을 정렬하는 필터도 추가해보았다.
| PostService.java
// 댓글 많은 순으로 게시글 목록 조회 (모집 마감 포함)
public ResponseEntity<List<PostReadResponseDto>> readCommentsPostList() {
    List<Post> posts = postRepository.findAll();
    
    // 댓글 많은 순으로 정렬
    getCommentsPosts(posts);
    List<PostReadResponseDto> commentsPostList = new ArrayList<>();
    for (Post post : posts) {
        commentsPostList.add(PostReadResponseDto.builder()
                .status(StatusMessage.SUCCESS)
                .id(post.getId())
                .title(post.getTitle())
                .content(post.getContent())
                .meetingType(post.getMeetingType())
                .contact(post.getContact())
                .period(post.getPeriod())
                .recruitmentState(post.isRecruitmentState())
                .hits(post.getHits())
                .postDate(post.getCreateDate())
                .writer(post.getMember().getNickname())
                .build()
        );
    }
    return new ResponseEntity<>(commentsPostList, HttpStatus.valueOf(StatusCode.SUCCESS));
}
// 댓글수 내림차순으로 게시글 정렬 (버블 정렬)
private List<Post> getCommentsPosts(List<Post> posts) {
    for (int i = 0; i< posts.size()-1; i++) {
        boolean swap = false;
        for (int j = 0; j< posts.size()-1-i; j++) {
            if(posts.get(j).getComments().size() < posts.get(j+1).getComments().size()) {
                Collections.swap(posts, j, j+1);
                swap = true;
            }
        }
        if (swap == false) {
            break;
        }
    }
    return posts;
}댓글 수를 기준으로 게시글을 정렬하는 것은 어려웠다..ㅜ
어떻게 해야할 지 고민하던 중에, 예전에 버블 정렬을 배웠던 기억이 났고 이를 활용해보기로 했다.
| PostController.java
// 댓글 많은 순 게시글 목록 조회 (모집 마감 포함)
@GetMapping("/post/list/comments")
public ResponseEntity<List<PostReadResponseDto>> readCommentsPostList() {
    return postService.readCommentsPostList();
}
사진에서 확인할 수는 없지만 댓글순으로 정렬되었다.
('테스트2'의 댓글은 3개이고, '테스트3'의 댓글은 1개이다.)