Skip to content

Commit

Permalink
Merge pull request #157 from Gongjakso/refactor/qa
Browse files Browse the repository at this point in the history
refactor: pagination과 fetch join간의 문제점 해결하기 위한 쿼리 튜닝 진행
  • Loading branch information
dl-00-e8 authored May 26, 2024
2 parents da235e4 + b5748cd commit eda7f94
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,12 @@
import com.gongjakso.server.domain.apply.enumerate.ApplyType;
import com.gongjakso.server.domain.member.entity.Member;
import com.gongjakso.server.domain.post.entity.Post;
import com.gongjakso.server.domain.post.enumerate.PostStatus;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;
import java.util.Optional;
Expand All @@ -22,8 +25,10 @@ public interface ApplyRepository extends JpaRepository<Apply,Long> {
Page<Apply> findAllByPost(Post post, Pageable pageable);

List<Apply> findApplyByApplyTypeAndMemberAndIsCanceledFalse(ApplyType applyType, Member member);

Page<Apply> findAllByMemberAndDeletedAtIsNullOrderByCreatedAtDesc(Member member, Pageable pageable);

@Query(value = "SELECT a FROM Apply a JOIN FETCH a.post p JOIN FETCH p.categories WHERE a.member = :member AND a.post.status IN :postStatus AND a.deletedAt IS NULL AND a.isCanceled = false ORDER BY a.createdAt DESC",
countQuery = "SELECT COUNT(DISTINCT a) FROM Apply a WHERE a.member = :member AND a.post.status IN :postStatus AND a.deletedAt IS NULL AND a.isCanceled = false")
Page<Apply> findAllByMemberAndPostStatusInAndDeletedAtIsNullAndIsCanceledFalseOrderByCreatedAtDesc(@Param("member") Member member, @Param("postStatus") List<PostStatus> postStatusList, Pageable pageable);

Apply findApplyByMemberAndPost(Member member,Post post);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,12 @@

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

import static com.gongjakso.server.domain.post.enumerate.PostStatus.EXTENSION;
import static com.gongjakso.server.domain.post.enumerate.PostStatus.RECRUITING;
import static com.gongjakso.server.domain.post.enumerate.PostStatus.*;
import static com.gongjakso.server.global.exception.ErrorCode.INVALID_VALUE_EXCEPTION;


Expand Down Expand Up @@ -184,9 +184,8 @@ public ParticipationPageRes myParticipationPostListPage(Member member, int page,
.filter(apply -> apply.getPost().getStatus().equals(PostStatus.ACTIVE) || apply.getPost().getStatus().equals(PostStatus.COMPLETE))
.map(Apply::getApplyId)
.toList();
Page<Post> postPage = postRepository.findAllByPostIdInOrMember(postIdList, member, pageable);
Page<Post> postPage = postRepository.findAllByPostIdInOrMemberAndDeletedAtIsNull(postIdList, member, pageable);
List<ParticipationList> participationLists = postPage.getContent().stream()
.filter(post -> post.getDeletedAt() == null)
.map(ParticipationList::of)
.collect(Collectors.toList());
int pageNo = postPage.getNumber();
Expand Down Expand Up @@ -264,12 +263,9 @@ public Page<MyPageRes> getMyApplyList(Member member, Pageable pageable) {
// Validation

// Business Logic
Page<Apply> applyPage = applyRepository.findAllByMemberAndDeletedAtIsNullOrderByCreatedAtDesc(member, pageable);
List<PostStatus> postStatusList = Arrays.asList(RECRUITING, EXTENSION, CANCEL, CLOSE);
Page<Apply> applyPage = applyRepository.findAllByMemberAndPostStatusInAndDeletedAtIsNullAndIsCanceledFalseOrderByCreatedAtDesc(member, postStatusList, pageable);
List<MyPageRes> applyList = applyPage.stream()
.filter(apply -> apply.getPost().getStatus() == PostStatus.RECRUITING ||
apply.getPost().getStatus() == PostStatus.EXTENSION ||
apply.getPost().getStatus() == PostStatus.CANCEL ||
apply.getPost().getStatus() == PostStatus.CLOSE)
.map(apply -> {
Post post = apply.getPost();
List<String> categoryList = post.getCategories().stream()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,5 +132,5 @@ public interface PostRepository extends JpaRepository<Post, Long> {

List<Post> findAllByMemberAndStatusInAndDeletedAtIsNullOrderByCreatedAtDesc(Member member, List<PostStatus> statusList);

Page<Post> findAllByPostIdInOrMember(List<Long> postIdList, Member member, Pageable pageable);
Page<Post> findAllByPostIdInOrMemberAndDeletedAtIsNull(List<Long> postIdList, Member member, Pageable pageable);
}

0 comments on commit eda7f94

Please sign in to comment.