Skip to content

Commit

Permalink
FIX: (#145) 리뷰 도메인 인프라스트럭처 계층을 재정의한다
Browse files Browse the repository at this point in the history
  • Loading branch information
anxi01 committed Feb 20, 2025
1 parent 96f3763 commit 09a6172
Showing 1 changed file with 49 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package com.zerozero.review.infrastructure.querydsl;

import com.querydsl.core.types.dsl.BooleanExpression;
import com.querydsl.jpa.impl.JPAQuery;
import com.querydsl.jpa.impl.JPAQueryFactory;
import com.zerozero.review.domain.model.Review;
import com.zerozero.review.domain.model.ReviewFilter;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.UUID;

import static com.zerozero.review.domain.model.QReview.review;
import static com.zerozero.review.domain.model.QReviewLike.reviewLike;

@Repository
@RequiredArgsConstructor
public class ReviewQueryRepository {

private final JPAQueryFactory queryFactory;

public List<Review> findByStoreIdAndFilter(UUID storeId, ReviewFilter reviewFilter) {
JPAQuery<Review> query = queryFactory.selectFrom(review)
.leftJoin(review.reviewLikes, reviewLike)
.fetchJoin()
.where(
eqStoreId(storeId),
isDeleted(false)
)
.distinct();

if (reviewFilter == null || reviewFilter == ReviewFilter.RECENT) {
query.orderBy(review.createdAt.desc());
} else if (reviewFilter == ReviewFilter.RECOMMEND) {
query.orderBy(review.reviewLikes.size().desc(), review.createdAt.desc());
}

return query.fetch();
}

private BooleanExpression eqStoreId(UUID storeId) {
return review.storeId.eq(storeId);
}

private BooleanExpression isDeleted(boolean deleted) {
return review.deleted.eq(deleted);
}
}

0 comments on commit 09a6172

Please sign in to comment.