From 2d6ed1c37ce305da3302b5c32d9a6a28360ae339 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=B0=BD=EB=B3=B4?= <101192100+jacobhboy@users.noreply.github.com> Date: Wed, 10 May 2023 19:33:51 +0900 Subject: [PATCH] =?UTF-8?q?[#26]Refactor:=20findGitHubsByImaginary?= =?UTF-8?q?=EB=8F=84=20native=20query=EC=97=90=EC=84=9C=20querydsl?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/repository/CustomGithubRepository.java | 3 +++ .../repository/CustomGithubRepositoryImpl.java | 12 ++++++++++++ .../github/domain/repository/GitHubRepository.java | 7 ------- .../github/service/ImaginaryNumberService.java | 6 +++--- 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/main/java/bssm/db/bssmgit/domain/github/domain/repository/CustomGithubRepository.java b/src/main/java/bssm/db/bssmgit/domain/github/domain/repository/CustomGithubRepository.java index 5d50cd9..3baca6b 100644 --- a/src/main/java/bssm/db/bssmgit/domain/github/domain/repository/CustomGithubRepository.java +++ b/src/main/java/bssm/db/bssmgit/domain/github/domain/repository/CustomGithubRepository.java @@ -1,9 +1,12 @@ package bssm.db.bssmgit.domain.github.domain.repository; +import bssm.db.bssmgit.domain.github.domain.GitHub; import bssm.db.bssmgit.domain.github.web.dto.response.GithubResponseDto; import java.util.List; public interface CustomGithubRepository { List getGitHubAndUser(); + + List findGitHubsByImaginary(); } diff --git a/src/main/java/bssm/db/bssmgit/domain/github/domain/repository/CustomGithubRepositoryImpl.java b/src/main/java/bssm/db/bssmgit/domain/github/domain/repository/CustomGithubRepositoryImpl.java index 76af629..5a3f440 100644 --- a/src/main/java/bssm/db/bssmgit/domain/github/domain/repository/CustomGithubRepositoryImpl.java +++ b/src/main/java/bssm/db/bssmgit/domain/github/domain/repository/CustomGithubRepositoryImpl.java @@ -1,5 +1,7 @@ package bssm.db.bssmgit.domain.github.domain.repository; +import bssm.db.bssmgit.domain.github.domain.GitHub; +import bssm.db.bssmgit.domain.github.domain.type.Imaginary; import bssm.db.bssmgit.domain.github.web.dto.response.GithubResponseDto; import com.querydsl.core.types.Projections; import com.querydsl.jpa.impl.JPAQueryFactory; @@ -24,6 +26,16 @@ public List getGitHubAndUser() { .from(gitHub) .innerJoin(user.gitHub) .fetchJoin() + .distinct() + .orderBy(gitHub.commits.desc()) + .fetch(); + } + + @Override + public List findGitHubsByImaginary() { + return jpaQueryFactory + .selectFrom(gitHub) + .where(gitHub.imaginary.eq(Imaginary.IMAGINARY_NUMBER)) .fetch(); } } diff --git a/src/main/java/bssm/db/bssmgit/domain/github/domain/repository/GitHubRepository.java b/src/main/java/bssm/db/bssmgit/domain/github/domain/repository/GitHubRepository.java index f1299b4..158af3b 100644 --- a/src/main/java/bssm/db/bssmgit/domain/github/domain/repository/GitHubRepository.java +++ b/src/main/java/bssm/db/bssmgit/domain/github/domain/repository/GitHubRepository.java @@ -2,14 +2,7 @@ import bssm.db.bssmgit.domain.github.domain.GitHub; import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; -import java.util.List; public interface GitHubRepository extends JpaRepository { - - @Query("select g from GitHub g " + - "where g.imaginary = " + - "bssm.db.bssmgit.domain.github.domain.type.Imaginary.IMAGINARY_NUMBER") - List findGitHubsByImaginary(); } diff --git a/src/main/java/bssm/db/bssmgit/domain/github/service/ImaginaryNumberService.java b/src/main/java/bssm/db/bssmgit/domain/github/service/ImaginaryNumberService.java index 24ae234..c820ecb 100644 --- a/src/main/java/bssm/db/bssmgit/domain/github/service/ImaginaryNumberService.java +++ b/src/main/java/bssm/db/bssmgit/domain/github/service/ImaginaryNumberService.java @@ -1,7 +1,7 @@ package bssm.db.bssmgit.domain.github.service; import bssm.db.bssmgit.domain.github.domain.GitHub; -import bssm.db.bssmgit.domain.github.domain.repository.GitHubRepository; +import bssm.db.bssmgit.domain.github.domain.repository.CustomGithubRepository; import bssm.db.bssmgit.domain.user.domain.ImaginaryNumber; import bssm.db.bssmgit.domain.user.domain.User; import bssm.db.bssmgit.domain.user.facade.ImaginaryNumberFacade; @@ -25,7 +25,7 @@ @Service public class ImaginaryNumberService { - private final GitHubRepository gitHubRepository; + private final CustomGithubRepository customGithubRepository; private final UserFacade userFacade; private final ImaginaryNumberFacade imaginaryNumberFacade; @@ -107,7 +107,7 @@ private boolean reportsLessThan5(List userIds, Long userId) { } private void dontHaveImaginaryNumber() { - List gitHubs = gitHubRepository.findGitHubsByImaginary(); + List gitHubs = customGithubRepository.findGitHubsByImaginary(); for (GitHub gitHub : gitHubs) { if (!notExistsRecordReportButAdaptImaginaryNumberUser()) {