From 736d1b4130ef984ed68c177481feb7d9cbf3c3c7 Mon Sep 17 00:00:00 2001 From: alstn113 Date: Wed, 11 Dec 2024 15:25:37 +0900 Subject: [PATCH] refactor: postgreSQL group by --- .../exam/domain/dto/ExamSummaryDto.java | 4 +-- .../infra/persistence/ExamRepositoryImpl.java | 27 +++++++++++++++++-- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/server/src/main/java/com/fluffy/exam/domain/dto/ExamSummaryDto.java b/server/src/main/java/com/fluffy/exam/domain/dto/ExamSummaryDto.java index 949dd50..d86cba4 100644 --- a/server/src/main/java/com/fluffy/exam/domain/dto/ExamSummaryDto.java +++ b/server/src/main/java/com/fluffy/exam/domain/dto/ExamSummaryDto.java @@ -16,7 +16,7 @@ public class ExamSummaryDto { private String description; private ExamStatus status; private AuthorDto author; - private int questionCount; + private Long questionCount; private LocalDateTime createdAt; private LocalDateTime updatedAt; @@ -27,7 +27,7 @@ public ExamSummaryDto( String description, ExamStatus status, AuthorDto author, - int questionCount, + Long questionCount, LocalDateTime createdAt, LocalDateTime updatedAt ) { diff --git a/server/src/main/java/com/fluffy/exam/infra/persistence/ExamRepositoryImpl.java b/server/src/main/java/com/fluffy/exam/infra/persistence/ExamRepositoryImpl.java index e7e4154..40ed4f3 100644 --- a/server/src/main/java/com/fluffy/exam/infra/persistence/ExamRepositoryImpl.java +++ b/server/src/main/java/com/fluffy/exam/infra/persistence/ExamRepositoryImpl.java @@ -3,6 +3,7 @@ import static com.fluffy.auth.domain.QMember.member; import static com.fluffy.exam.domain.QExam.exam; import static com.fluffy.exam.domain.QQuestion.question; +import static com.querydsl.core.types.ExpressionUtils.count; import com.fluffy.exam.domain.ExamRepositoryCustom; import com.fluffy.exam.domain.ExamStatus; @@ -37,7 +38,7 @@ public List findPublishedSummaries() { exam.description.value, exam.status, AUTHOR_PROJECTION, - exam.questionGroup.questions.size(), // postgreSQL group by 이슈로 인함. + question.count(), exam.createdAt, exam.updatedAt )) @@ -45,6 +46,17 @@ public List findPublishedSummaries() { .leftJoin(member).on(exam.memberId.eq(member.id)) .leftJoin(exam.questionGroup.questions, question) .where(exam.status.eq(ExamStatus.PUBLISHED)) + .groupBy( + exam.id, + exam.title, + exam.description, + exam.status, + member.id, + member.name, + member.avatarUrl, + exam.createdAt, + exam.updatedAt + ) .orderBy(exam.updatedAt.desc()) .fetch(); } @@ -58,7 +70,7 @@ public List findMySummaries(ExamStatus status, Long memberId) { exam.description.value, exam.status, AUTHOR_PROJECTION, - exam.questionGroup.questions.size(), + question.count(), exam.createdAt, exam.updatedAt )) @@ -66,6 +78,17 @@ public List findMySummaries(ExamStatus status, Long memberId) { .leftJoin(member).on(exam.memberId.eq(member.id)) .leftJoin(exam.questionGroup.questions, question) .where(exam.memberId.eq(memberId), exam.status.eq(status)) + .groupBy( + exam.id, + exam.title, + exam.description, + exam.status, + member.id, + member.name, + member.avatarUrl, + exam.createdAt, + exam.updatedAt + ) .orderBy(exam.updatedAt.desc()) .fetch(); }