From 3d47caa0b2ef56fb6fa15d2b2eb6c6276727a91a Mon Sep 17 00:00:00 2001 From: coli Date: Mon, 11 Aug 2025 23:31:40 +0900 Subject: [PATCH 01/22] =?UTF-8?q?refactor:=20=EC=A4=91=EB=B3=B5=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=20=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/devoops/service/GitHubService.java | 12 +++++------- .../github/GithubTokenDomainRepository.java | 2 +- .../github/GithubTokenDomainRepositoryImpl.java | 11 +++++++---- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/gss-api-app/src/main/java/com/devoops/service/GitHubService.java b/gss-api-app/src/main/java/com/devoops/service/GitHubService.java index d7ec08f7..e52b37ad 100644 --- a/gss-api-app/src/main/java/com/devoops/service/GitHubService.java +++ b/gss-api-app/src/main/java/com/devoops/service/GitHubService.java @@ -44,12 +44,11 @@ public class GitHubService { public void registerWebhook(User user, long repositoryId) { GithubRepository githubRepository = githubRepoDomainRepository.findByIdAndUserId(repositoryId, user.getId()); - GithubToken githubToken = githubTokenDomainRepository.findByUserId(user) - .orElseThrow(() -> new GssException(ErrorCode.NO_RESOURCE_FOUND)); - createWebHook(githubToken, githubRepository); + GithubToken githubToken = githubTokenDomainRepository.getByUserId(user.getId()); + createWebhook(githubToken, githubRepository); } - private GithubWebhook createWebHook(GithubToken token, GithubRepository repo) { + private void createWebhook(GithubToken token, GithubRepository repo) { WebHookCreateResponse webHookCreateResponse = gitHubClient.createWebhook( BEARER_PREFIX + token.getToken(), repo.getOwner(), @@ -57,7 +56,7 @@ private GithubWebhook createWebHook(GithubToken token, GithubRepository repo) { GitHubWebhookRequest.ofPullRequestEvent(mcpWebhookUrl) ); GithubWebhook webhook = new GithubWebhook(webHookCreateResponse.id(), repo.getId()); - return githubWebhookDomainRepository.save(webhook); + githubWebhookDomainRepository.save(webhook); } public List getUserPullRequests( @@ -90,8 +89,7 @@ public GithubRepoInfoResponse getRepositoryInfo(GithubRepoUrl repoUrl, GithubTok @Transactional public void deleteWebhook(User user, long repositoryId) { GithubRepository repo = githubRepoDomainRepository.findByIdAndUserId(repositoryId, user.getId()); - GithubToken githubToken = githubTokenDomainRepository.findByUserId(user) - .orElseThrow(() -> new GssException(ErrorCode.NO_RESOURCE_FOUND)); + GithubToken githubToken = githubTokenDomainRepository.getByUserId(user.getId()); GithubWebhook webhook = githubWebhookDomainRepository.findByRepositoryId(repo.getId()); tryDeleteWebhook(githubToken, webhook, repo); githubWebhookDomainRepository.deleteById(webhook.getId()); diff --git a/gss-domain/src/main/java/com/devoops/domain/repository/github/GithubTokenDomainRepository.java b/gss-domain/src/main/java/com/devoops/domain/repository/github/GithubTokenDomainRepository.java index 1b6540eb..0308f12d 100644 --- a/gss-domain/src/main/java/com/devoops/domain/repository/github/GithubTokenDomainRepository.java +++ b/gss-domain/src/main/java/com/devoops/domain/repository/github/GithubTokenDomainRepository.java @@ -9,5 +9,5 @@ public interface GithubTokenDomainRepository { GithubToken save(GithubToken token, User user); - Optional findByUserId(User owner); + GithubToken getByUserId(long userId); } diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubTokenDomainRepositoryImpl.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubTokenDomainRepositoryImpl.java index 28d09320..2fa5da9c 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubTokenDomainRepositoryImpl.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubTokenDomainRepositoryImpl.java @@ -3,6 +3,8 @@ import com.devoops.domain.entity.github.GithubToken; import com.devoops.domain.entity.user.User; import com.devoops.domain.repository.github.GithubTokenDomainRepository; +import com.devoops.exception.custom.GssException; +import com.devoops.exception.errorcode.ErrorCode; import com.devoops.jpa.entity.github.GithubTokenEntity; import java.util.Optional; import lombok.RequiredArgsConstructor; @@ -23,9 +25,10 @@ public GithubToken save(GithubToken token, User owner) { } @Override - public Optional findByUserId(User owner) { - - return githubTokenJpaRepository.findByUserId(owner.getId()) - .map(GithubTokenEntity::toDomainEntity); + @Transactional(readOnly = true) + public GithubToken getByUserId(long userId) { + return githubTokenJpaRepository.findByUserId(userId) + .map(GithubTokenEntity::toDomainEntity) + .orElseThrow(() -> new GssException(ErrorCode.NO_RESOURCE_FOUND)); } } From 6045f1f948650592e298e61b2d06821cc447d6e9 Mon Sep 17 00:00:00 2001 From: coli Date: Mon, 11 Aug 2025 23:43:44 +0900 Subject: [PATCH 02/22] =?UTF-8?q?refactor:=20=EA=B0=99=EC=9D=80=20?= =?UTF-8?q?=EB=A0=88=ED=8F=AC=20=EB=8C=80=EC=83=81=20=EB=93=B1=EB=A1=9D?= =?UTF-8?q?=EC=9D=B4=20=EA=B0=80=EB=8A=A5=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/devoops/service/GitHubService.java | 5 ++--- .../github/GithubRepoDomainRepository.java | 2 +- .../github/GithubRepoDomainRepositoryImpl.java | 12 ++++++------ .../repository/github/GithubRepoJpaRepository.java | 2 +- .../service/repository/RepositoryService.java | 12 ++---------- 5 files changed, 12 insertions(+), 21 deletions(-) diff --git a/gss-api-app/src/main/java/com/devoops/service/GitHubService.java b/gss-api-app/src/main/java/com/devoops/service/GitHubService.java index e52b37ad..d8ad3ec4 100644 --- a/gss-api-app/src/main/java/com/devoops/service/GitHubService.java +++ b/gss-api-app/src/main/java/com/devoops/service/GitHubService.java @@ -14,8 +14,6 @@ import com.devoops.dto.response.GithubRepoInfoResponse; import com.devoops.dto.response.WebHookCreateResponse; import com.devoops.exception.GithubNotFoundException; -import com.devoops.exception.custom.GssException; -import com.devoops.exception.errorcode.ErrorCode; import java.util.List; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -49,11 +47,12 @@ public void registerWebhook(User user, long repositoryId) { } private void createWebhook(GithubToken token, GithubRepository repo) { + String webhookUrl = mcpWebhookUrl + "/" + repo.getId(); WebHookCreateResponse webHookCreateResponse = gitHubClient.createWebhook( BEARER_PREFIX + token.getToken(), repo.getOwner(), repo.getName(), - GitHubWebhookRequest.ofPullRequestEvent(mcpWebhookUrl) + GitHubWebhookRequest.ofPullRequestEvent(webhookUrl) ); GithubWebhook webhook = new GithubWebhook(webHookCreateResponse.id(), repo.getId()); githubWebhookDomainRepository.save(webhook); diff --git a/gss-domain/src/main/java/com/devoops/domain/repository/github/GithubRepoDomainRepository.java b/gss-domain/src/main/java/com/devoops/domain/repository/github/GithubRepoDomainRepository.java index 36cd935c..5f4a602c 100644 --- a/gss-domain/src/main/java/com/devoops/domain/repository/github/GithubRepoDomainRepository.java +++ b/gss-domain/src/main/java/com/devoops/domain/repository/github/GithubRepoDomainRepository.java @@ -16,7 +16,7 @@ public interface GithubRepoDomainRepository { List findByUserId(long userId); - boolean existsByExternalId(long externalId); + boolean existsByExternalIdAndUserId(long externalId, long userId); GithubRepository findByExternalId(long externalId); diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubRepoDomainRepositoryImpl.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubRepoDomainRepositoryImpl.java index 6b1171c8..83054c74 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubRepoDomainRepositoryImpl.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubRepoDomainRepositoryImpl.java @@ -41,6 +41,12 @@ public boolean existsByIdAndUserId(long id, long userId) { return repoJpaRepository.existsByIdAndUserId(id, userId); } + @Override + @Transactional(readOnly = true) + public boolean existsByExternalIdAndUserId(long externalId, long userId) { + return repoJpaRepository.existsByGithubRepositoryIdAndUserId(externalId, userId); + } + @Override @Transactional(readOnly = true) public GithubRepository findByIdAndUserId(long id, long userId) { @@ -59,12 +65,6 @@ public List findByUserId(long userId) { .toList(); } - @Override - @Transactional(readOnly = true) - public boolean existsByExternalId(long externalId) { - return repoJpaRepository.existsByGithubRepositoryId(externalId); - } - @Override @Transactional(readOnly = true) public GithubRepository findByExternalId(long externalId) { diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubRepoJpaRepository.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubRepoJpaRepository.java index ffda064b..3cdcd61d 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubRepoJpaRepository.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubRepoJpaRepository.java @@ -13,7 +13,7 @@ public interface GithubRepoJpaRepository extends JpaRepository findAllByUserId(Long userId); - boolean existsByGithubRepositoryId(long externalId); + boolean existsByGithubRepositoryIdAndUserId(long externalId, long userId); Optional findByGithubRepositoryId(long externalId); } diff --git a/gss-domain/src/main/java/com/devoops/service/repository/RepositoryService.java b/gss-domain/src/main/java/com/devoops/service/repository/RepositoryService.java index acaa400d..d9882428 100644 --- a/gss-domain/src/main/java/com/devoops/service/repository/RepositoryService.java +++ b/gss-domain/src/main/java/com/devoops/service/repository/RepositoryService.java @@ -3,19 +3,14 @@ import com.devoops.command.request.RepositoryCreateCommand; import com.devoops.domain.entity.github.GithubRepository; import com.devoops.domain.entity.github.PullRequests; -import com.devoops.domain.entity.github.Question; import com.devoops.domain.entity.user.User; -import com.devoops.domain.repository.github.AnswerDomainRepository; -import com.devoops.domain.repository.github.AnswerRankingDomainRepository; import com.devoops.domain.repository.github.GithubRepoDomainRepository; import com.devoops.domain.repository.github.PullRequestDomainRepository; -import com.devoops.domain.repository.github.QuestionDomainRepository; import com.devoops.exception.custom.GssException; import com.devoops.exception.errorcode.ErrorCode; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; - -import java.util.List; import org.springframework.transaction.annotation.Transactional; @Service @@ -24,12 +19,9 @@ public class RepositoryService { private final GithubRepoDomainRepository repoRepository; private final PullRequestDomainRepository pullRequestRepository; - private final AnswerRankingDomainRepository answerRankingRepository; - private final AnswerDomainRepository answerRepository; - private final QuestionDomainRepository questionRepository; public GithubRepository save(RepositoryCreateCommand command) { - if(repoRepository.existsByExternalId(command.externalId())) { + if (repoRepository.existsByExternalIdAndUserId(command.externalId(), command.userId())) { throw new GssException(ErrorCode.ALREADY_SAVED_REPOSITORY); } return repoRepository.save(command.toDomainEntity()); From 844c70b4dcb8460d69475078edf0654b704358c6 Mon Sep 17 00:00:00 2001 From: coli Date: Mon, 11 Aug 2025 23:50:39 +0900 Subject: [PATCH 03/22] =?UTF-8?q?chore:=20=ED=8C=A8=ED=82=A4=EC=A7=80=20?= =?UTF-8?q?=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../docs/RepositoryControllerSwagger.java | 7 ------ .../pullrequests/PullRequestController.java | 2 +- .../question/QuestionController.java | 4 ++-- .../repository/RepositoryController.java | 4 ++-- .../dto/response/AnswerPutResponse.java | 2 +- .../dto/response/AnswerPutResponses.java | 2 +- .../dto/response/AnswerSaveResponse.java | 2 +- .../dto/response/AnswerUpdateResponse.java | 2 +- .../dto/response/MyRepositoriesResponse.java | 2 +- .../PullRequestDetailReadResponse.java | 4 ++-- .../response/PullRequestRankingResponse.java | 2 +- .../response/PullRequestRankingResponses.java | 3 +-- .../dto/response/PullRequestReadResponse.java | 4 ++-- .../RepositoryPullRequestResponse.java | 4 ++-- .../RepositoryPullRequestResponses.java | 3 +-- .../dto/response/RepositorySaveResponse.java | 2 +- .../com/devoops/service/GitHubService.java | 12 +++++----- .../service/facade/AuthFacadeService.java | 2 +- .../facade/PullRequestFacadeService.java | 6 ++--- .../service/facade/QuestionFacadeService.java | 8 +++---- .../facade/RepositoryFacadeService.java | 4 ++-- .../question/QuestionControllerTest.java | 10 ++++----- .../repository/RepositoryControllerTest.java | 6 ++--- .../devoops/service/GitHubServiceTest.java | 7 +++--- .../AnswerRankingServiceTest.java | 16 +++++++------- .../facade/PullRequestFacadeServiceTest.java | 12 +++++----- .../facade/QuestionFacadeServiceTest.java | 12 +++++----- .../facade/RepositoryFacadeServiceTest.java | 4 ++-- .../pullrequests/PullRequestServiceTest.java | 6 ++--- .../service/question/QuestionServiceTest.java | 15 +++++-------- .../repository/RepositoryServiceTest.java | 22 +++++++------------ .../devoops/service/user/UserServiceTest.java | 2 +- .../request/PullRequestCreateCommand.java | 4 ++-- .../request/QuestionCreateCommand.java | 2 +- .../request/RepositoryCreateCommand.java | 2 +- .../entity/github/{ => answer}/Answer.java | 2 +- .../github/{ => answer}/AnswerRanking.java | 2 +- .../github/{ => answer}/AnswerRankings.java | 2 +- .../entity/github/{ => answer}/Answers.java | 2 +- .../entity/github/{ => pr}/PullRequest.java | 2 +- .../entity/github/{ => pr}/PullRequests.java | 2 +- .../entity/github/{ => pr}/RecordStatus.java | 2 +- .../github/{ => question}/Question.java | 2 +- .../github/{ => repo}/GithubRepository.java | 2 +- .../github/{ => token}/GithubToken.java | 2 +- .../github/{ => webhook}/GithubWebhook.java | 2 +- .../com/devoops/domain/entity/user/User.java | 2 +- .../{ => answer}/AnswerDomainRepository.java | 6 ++--- .../AnswerRankingDomainRepository.java | 10 ++++----- .../{ => pr}/PullRequestDomainRepository.java | 9 ++++---- .../QuestionDomainRepository.java | 6 ++--- .../GithubRepoDomainRepository.java | 4 ++-- .../GithubTokenDomainRepository.java | 6 ++--- .../GithubWebhookDomainRepository.java | 4 ++-- .../github/{ => answer}/AnswerEntity.java | 9 ++------ .../{ => answer}/AnswerRankingEntity.java | 6 ++--- .../github/{ => pr}/PullRequestEntity.java | 6 ++--- .../github/{ => question}/QuestionEntity.java | 9 ++------ .../{ => repo}/GithubRepositoryEntity.java | 4 ++-- .../github/{ => token}/GithubTokenEntity.java | 9 ++------ .../{ => webhook}/GithubWebhookEntity.java | 4 ++-- .../devoops/jpa/entity/user/UserEntity.java | 2 +- .../AnswerDomainRepositoryImpl.java | 11 +++++----- .../{ => answer}/AnswerJpaRepository.java | 4 ++-- .../AnswerRankingDomainRepositoryImpl.java | 22 ++++++++++--------- .../AnswerRankingJpaRepository.java | 4 ++-- .../PullRequestDomainRepositoryImpl.java | 18 ++++++++------- .../{ => pr}/PullRequestJpaRepository.java | 4 ++-- .../QuestionDomainRepositoryImpl.java | 12 +++++----- .../{ => question}/QuestionJpaRepository.java | 4 ++-- .../GithubRepoDomainRepositoryImpl.java | 9 ++++---- .../{ => repo}/GithubRepoJpaRepository.java | 4 ++-- .../GithubTokenDomainRepositoryImpl.java | 9 ++++---- .../{ => token}/GithubTokenJpaRepository.java | 4 ++-- .../GithubWebHookDomainRepositoryImpl.java | 8 +++---- .../GithubWebHookJpaRepository.java | 4 ++-- .../user/UserDomainRepositoryImpl.java | 6 ++--- .../devoops/service/answer/AnswerService.java | 4 ++-- .../answerranking/AnswerRankingService.java | 12 +++++----- .../pullrequest/PullRequestService.java | 8 +++---- .../service/question/QuestionService.java | 11 +++++----- .../service/repository/RepositoryService.java | 8 +++---- .../java/com/devoops/BaseRepositoryTest.java | 4 ++-- .../devoops/generator/AnswerGenerator.java | 6 ++--- .../generator/AnswerRankingGenerator.java | 12 +++++----- .../generator/GithubRepoGenerator.java | 4 ++-- .../generator/PullRequestGenerator.java | 8 +++---- .../devoops/generator/QuestionGenerator.java | 6 ++--- .../com/devoops/generator/UserGenerator.java | 2 +- .../devoops/generator/WebhookGenerator.java | 6 ++--- .../devoops/event/QuestionCreateEvent.java | 4 ++-- .../devoops/event/QuestionEventListener.java | 6 ++--- .../service/webhook/WebhookFacadeService.java | 8 +++---- .../webhook/WebhookFacadeServiceTest.java | 8 +++---- 94 files changed, 260 insertions(+), 299 deletions(-) rename gss-domain/src/main/java/com/devoops/domain/entity/github/{ => answer}/Answer.java (89%) rename gss-domain/src/main/java/com/devoops/domain/entity/github/{ => answer}/AnswerRanking.java (89%) rename gss-domain/src/main/java/com/devoops/domain/entity/github/{ => answer}/AnswerRankings.java (94%) rename gss-domain/src/main/java/com/devoops/domain/entity/github/{ => answer}/Answers.java (78%) rename gss-domain/src/main/java/com/devoops/domain/entity/github/{ => pr}/PullRequest.java (93%) rename gss-domain/src/main/java/com/devoops/domain/entity/github/{ => pr}/PullRequests.java (81%) rename gss-domain/src/main/java/com/devoops/domain/entity/github/{ => pr}/RecordStatus.java (62%) rename gss-domain/src/main/java/com/devoops/domain/entity/github/{ => question}/Question.java (89%) rename gss-domain/src/main/java/com/devoops/domain/entity/github/{ => repo}/GithubRepository.java (94%) rename gss-domain/src/main/java/com/devoops/domain/entity/github/{ => token}/GithubToken.java (76%) rename gss-domain/src/main/java/com/devoops/domain/entity/github/{ => webhook}/GithubWebhook.java (87%) rename gss-domain/src/main/java/com/devoops/domain/repository/github/{ => answer}/AnswerDomainRepository.java (72%) rename gss-domain/src/main/java/com/devoops/domain/repository/github/{ => answer}/AnswerRankingDomainRepository.java (51%) rename gss-domain/src/main/java/com/devoops/domain/repository/github/{ => pr}/PullRequestDomainRepository.java (74%) rename gss-domain/src/main/java/com/devoops/domain/repository/github/{ => question}/QuestionDomainRepository.java (72%) rename gss-domain/src/main/java/com/devoops/domain/repository/github/{ => repo}/GithubRepoDomainRepository.java (82%) rename gss-domain/src/main/java/com/devoops/domain/repository/github/{ => token}/GithubTokenDomainRepository.java (60%) rename gss-domain/src/main/java/com/devoops/domain/repository/github/{ => webhook}/GithubWebhookDomainRepository.java (63%) rename gss-domain/src/main/java/com/devoops/jpa/entity/github/{ => answer}/AnswerEntity.java (83%) rename gss-domain/src/main/java/com/devoops/jpa/entity/github/{ => answer}/AnswerRankingEntity.java (91%) rename gss-domain/src/main/java/com/devoops/jpa/entity/github/{ => pr}/PullRequestEntity.java (94%) rename gss-domain/src/main/java/com/devoops/jpa/entity/github/{ => question}/QuestionEntity.java (82%) rename gss-domain/src/main/java/com/devoops/jpa/entity/github/{ => repo}/GithubRepositoryEntity.java (95%) rename gss-domain/src/main/java/com/devoops/jpa/entity/github/{ => token}/GithubTokenEntity.java (77%) rename gss-domain/src/main/java/com/devoops/jpa/entity/github/{ => webhook}/GithubWebhookEntity.java (89%) rename gss-domain/src/main/java/com/devoops/jpa/repository/github/{ => answer}/AnswerDomainRepositoryImpl.java (87%) rename gss-domain/src/main/java/com/devoops/jpa/repository/github/{ => answer}/AnswerJpaRepository.java (89%) rename gss-domain/src/main/java/com/devoops/jpa/repository/github/{ => answer}/AnswerRankingDomainRepositoryImpl.java (80%) rename gss-domain/src/main/java/com/devoops/jpa/repository/github/{ => answer}/AnswerRankingJpaRepository.java (78%) rename gss-domain/src/main/java/com/devoops/jpa/repository/github/{ => pr}/PullRequestDomainRepositoryImpl.java (88%) rename gss-domain/src/main/java/com/devoops/jpa/repository/github/{ => pr}/PullRequestJpaRepository.java (84%) rename gss-domain/src/main/java/com/devoops/jpa/repository/github/{ => question}/QuestionDomainRepositoryImpl.java (86%) rename gss-domain/src/main/java/com/devoops/jpa/repository/github/{ => question}/QuestionJpaRepository.java (91%) rename gss-domain/src/main/java/com/devoops/jpa/repository/github/{ => repo}/GithubRepoDomainRepositoryImpl.java (91%) rename gss-domain/src/main/java/com/devoops/jpa/repository/github/{ => repo}/GithubRepoJpaRepository.java (83%) rename gss-domain/src/main/java/com/devoops/jpa/repository/github/{ => token}/GithubTokenDomainRepositoryImpl.java (80%) rename gss-domain/src/main/java/com/devoops/jpa/repository/github/{ => token}/GithubTokenJpaRepository.java (68%) rename gss-domain/src/main/java/com/devoops/jpa/repository/github/{ => webhook}/GithubWebHookDomainRepositoryImpl.java (81%) rename gss-domain/src/main/java/com/devoops/jpa/repository/github/{ => webhook}/GithubWebHookJpaRepository.java (69%) diff --git a/gss-api-app/src/main/java/com/devoops/controller/docs/RepositoryControllerSwagger.java b/gss-api-app/src/main/java/com/devoops/controller/docs/RepositoryControllerSwagger.java index ec64081e..71303c13 100644 --- a/gss-api-app/src/main/java/com/devoops/controller/docs/RepositoryControllerSwagger.java +++ b/gss-api-app/src/main/java/com/devoops/controller/docs/RepositoryControllerSwagger.java @@ -1,11 +1,7 @@ package com.devoops.controller.docs; -import com.devoops.controller.auth.AuthUser; -import com.devoops.domain.entity.github.GithubRepository; -import com.devoops.domain.entity.github.PullRequests; import com.devoops.domain.entity.user.User; import com.devoops.dto.request.RepositorySaveRequest; -import com.devoops.dto.response.AnswerUpdateResponse; import com.devoops.dto.response.MyRepositoriesResponse; import com.devoops.dto.response.RepositoryPullRequestResponses; import com.devoops.dto.response.RepositorySaveResponse; @@ -17,10 +13,7 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; -import java.util.List; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestParam; @Tag(name = "Repository API") @SecurityRequirement(name = "Authorization") diff --git a/gss-api-app/src/main/java/com/devoops/controller/pullrequests/PullRequestController.java b/gss-api-app/src/main/java/com/devoops/controller/pullrequests/PullRequestController.java index 957db701..4776519a 100644 --- a/gss-api-app/src/main/java/com/devoops/controller/pullrequests/PullRequestController.java +++ b/gss-api-app/src/main/java/com/devoops/controller/pullrequests/PullRequestController.java @@ -2,7 +2,7 @@ import com.devoops.controller.auth.AuthUser; import com.devoops.controller.docs.PullRequestControllerSwagger; -import com.devoops.domain.entity.github.RecordStatus; +import com.devoops.domain.entity.github.pr.RecordStatus; import com.devoops.domain.entity.user.User; import com.devoops.dto.response.PullRequestDetailReadResponse; import com.devoops.dto.response.PullRequestRankingResponses; diff --git a/gss-api-app/src/main/java/com/devoops/controller/question/QuestionController.java b/gss-api-app/src/main/java/com/devoops/controller/question/QuestionController.java index d076e6de..1fb9bb0f 100644 --- a/gss-api-app/src/main/java/com/devoops/controller/question/QuestionController.java +++ b/gss-api-app/src/main/java/com/devoops/controller/question/QuestionController.java @@ -2,8 +2,8 @@ import com.devoops.controller.auth.AuthUser; import com.devoops.controller.docs.QuestionControllerSwagger; -import com.devoops.domain.entity.github.Answer; -import com.devoops.domain.entity.github.Answers; +import com.devoops.domain.entity.github.answer.Answer; +import com.devoops.domain.entity.github.answer.Answers; import com.devoops.domain.entity.user.User; import com.devoops.dto.request.AnswerPutRequests; import com.devoops.dto.request.AnswerUpdateRequest; diff --git a/gss-api-app/src/main/java/com/devoops/controller/repository/RepositoryController.java b/gss-api-app/src/main/java/com/devoops/controller/repository/RepositoryController.java index 818e0ea7..64265cad 100644 --- a/gss-api-app/src/main/java/com/devoops/controller/repository/RepositoryController.java +++ b/gss-api-app/src/main/java/com/devoops/controller/repository/RepositoryController.java @@ -2,8 +2,8 @@ import com.devoops.controller.auth.AuthUser; import com.devoops.controller.docs.RepositoryControllerSwagger; -import com.devoops.domain.entity.github.GithubRepository; -import com.devoops.domain.entity.github.PullRequests; +import com.devoops.domain.entity.github.repo.GithubRepository; +import com.devoops.domain.entity.github.pr.PullRequests; import com.devoops.domain.entity.user.User; import com.devoops.dto.request.RepositorySaveRequest; import com.devoops.dto.response.MyRepositoriesResponse; diff --git a/gss-api-app/src/main/java/com/devoops/dto/response/AnswerPutResponse.java b/gss-api-app/src/main/java/com/devoops/dto/response/AnswerPutResponse.java index a5eee1d6..85a608c8 100644 --- a/gss-api-app/src/main/java/com/devoops/dto/response/AnswerPutResponse.java +++ b/gss-api-app/src/main/java/com/devoops/dto/response/AnswerPutResponse.java @@ -1,6 +1,6 @@ package com.devoops.dto.response; -import com.devoops.domain.entity.github.Answer; +import com.devoops.domain.entity.github.answer.Answer; public record AnswerPutResponse( long answerId, diff --git a/gss-api-app/src/main/java/com/devoops/dto/response/AnswerPutResponses.java b/gss-api-app/src/main/java/com/devoops/dto/response/AnswerPutResponses.java index 83abbabb..27498f84 100644 --- a/gss-api-app/src/main/java/com/devoops/dto/response/AnswerPutResponses.java +++ b/gss-api-app/src/main/java/com/devoops/dto/response/AnswerPutResponses.java @@ -1,6 +1,6 @@ package com.devoops.dto.response; -import com.devoops.domain.entity.github.Answers; +import com.devoops.domain.entity.github.answer.Answers; import java.util.List; import java.util.stream.Collectors; diff --git a/gss-api-app/src/main/java/com/devoops/dto/response/AnswerSaveResponse.java b/gss-api-app/src/main/java/com/devoops/dto/response/AnswerSaveResponse.java index a35e333a..05ebe70e 100644 --- a/gss-api-app/src/main/java/com/devoops/dto/response/AnswerSaveResponse.java +++ b/gss-api-app/src/main/java/com/devoops/dto/response/AnswerSaveResponse.java @@ -1,6 +1,6 @@ package com.devoops.dto.response; -import com.devoops.domain.entity.github.Answer; +import com.devoops.domain.entity.github.answer.Answer; import io.swagger.v3.oas.annotations.media.Schema; public record AnswerSaveResponse( diff --git a/gss-api-app/src/main/java/com/devoops/dto/response/AnswerUpdateResponse.java b/gss-api-app/src/main/java/com/devoops/dto/response/AnswerUpdateResponse.java index 15dede90..7fe05110 100644 --- a/gss-api-app/src/main/java/com/devoops/dto/response/AnswerUpdateResponse.java +++ b/gss-api-app/src/main/java/com/devoops/dto/response/AnswerUpdateResponse.java @@ -1,6 +1,6 @@ package com.devoops.dto.response; -import com.devoops.domain.entity.github.Answer; +import com.devoops.domain.entity.github.answer.Answer; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/gss-api-app/src/main/java/com/devoops/dto/response/MyRepositoriesResponse.java b/gss-api-app/src/main/java/com/devoops/dto/response/MyRepositoriesResponse.java index 080fb66c..5a315eba 100644 --- a/gss-api-app/src/main/java/com/devoops/dto/response/MyRepositoriesResponse.java +++ b/gss-api-app/src/main/java/com/devoops/dto/response/MyRepositoriesResponse.java @@ -1,6 +1,6 @@ package com.devoops.dto.response; -import com.devoops.domain.entity.github.GithubRepository; +import com.devoops.domain.entity.github.repo.GithubRepository; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/gss-api-app/src/main/java/com/devoops/dto/response/PullRequestDetailReadResponse.java b/gss-api-app/src/main/java/com/devoops/dto/response/PullRequestDetailReadResponse.java index 83a63b43..fb360325 100644 --- a/gss-api-app/src/main/java/com/devoops/dto/response/PullRequestDetailReadResponse.java +++ b/gss-api-app/src/main/java/com/devoops/dto/response/PullRequestDetailReadResponse.java @@ -1,8 +1,8 @@ package com.devoops.dto.response; -import com.devoops.domain.entity.github.PullRequest; +import com.devoops.domain.entity.github.pr.PullRequest; import com.devoops.domain.entity.github.QuestionAnswer; -import com.devoops.domain.entity.github.RecordStatus; +import com.devoops.domain.entity.github.pr.RecordStatus; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/gss-api-app/src/main/java/com/devoops/dto/response/PullRequestRankingResponse.java b/gss-api-app/src/main/java/com/devoops/dto/response/PullRequestRankingResponse.java index 276e99da..27c56cd5 100644 --- a/gss-api-app/src/main/java/com/devoops/dto/response/PullRequestRankingResponse.java +++ b/gss-api-app/src/main/java/com/devoops/dto/response/PullRequestRankingResponse.java @@ -1,6 +1,6 @@ package com.devoops.dto.response; -import com.devoops.domain.entity.github.AnswerRanking; +import com.devoops.domain.entity.github.answer.AnswerRanking; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; diff --git a/gss-api-app/src/main/java/com/devoops/dto/response/PullRequestRankingResponses.java b/gss-api-app/src/main/java/com/devoops/dto/response/PullRequestRankingResponses.java index 2fc20a9f..279f58f8 100644 --- a/gss-api-app/src/main/java/com/devoops/dto/response/PullRequestRankingResponses.java +++ b/gss-api-app/src/main/java/com/devoops/dto/response/PullRequestRankingResponses.java @@ -1,7 +1,6 @@ package com.devoops.dto.response; -import com.devoops.domain.entity.github.AnswerRankings; -import com.devoops.dto.request.AnswerPutRequest; +import com.devoops.domain.entity.github.answer.AnswerRankings; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Schema; import java.util.List; diff --git a/gss-api-app/src/main/java/com/devoops/dto/response/PullRequestReadResponse.java b/gss-api-app/src/main/java/com/devoops/dto/response/PullRequestReadResponse.java index f837057a..df3ce658 100644 --- a/gss-api-app/src/main/java/com/devoops/dto/response/PullRequestReadResponse.java +++ b/gss-api-app/src/main/java/com/devoops/dto/response/PullRequestReadResponse.java @@ -1,8 +1,8 @@ package com.devoops.dto.response; -import com.devoops.domain.entity.github.PullRequest; +import com.devoops.domain.entity.github.pr.PullRequest; import com.devoops.domain.entity.github.QuestionAnswer; -import com.devoops.domain.entity.github.RecordStatus; +import com.devoops.domain.entity.github.pr.RecordStatus; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/gss-api-app/src/main/java/com/devoops/dto/response/RepositoryPullRequestResponse.java b/gss-api-app/src/main/java/com/devoops/dto/response/RepositoryPullRequestResponse.java index 07128723..590e9b2f 100644 --- a/gss-api-app/src/main/java/com/devoops/dto/response/RepositoryPullRequestResponse.java +++ b/gss-api-app/src/main/java/com/devoops/dto/response/RepositoryPullRequestResponse.java @@ -1,7 +1,7 @@ package com.devoops.dto.response; -import com.devoops.domain.entity.github.PullRequest; -import com.devoops.domain.entity.github.RecordStatus; +import com.devoops.domain.entity.github.pr.PullRequest; +import com.devoops.domain.entity.github.pr.RecordStatus; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; diff --git a/gss-api-app/src/main/java/com/devoops/dto/response/RepositoryPullRequestResponses.java b/gss-api-app/src/main/java/com/devoops/dto/response/RepositoryPullRequestResponses.java index 316fea3f..ea7c94a9 100644 --- a/gss-api-app/src/main/java/com/devoops/dto/response/RepositoryPullRequestResponses.java +++ b/gss-api-app/src/main/java/com/devoops/dto/response/RepositoryPullRequestResponses.java @@ -1,7 +1,6 @@ package com.devoops.dto.response; -import com.devoops.domain.entity.github.PullRequests; -import com.devoops.dto.request.AnswerPutRequest; +import com.devoops.domain.entity.github.pr.PullRequests; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Schema; import java.util.List; diff --git a/gss-api-app/src/main/java/com/devoops/dto/response/RepositorySaveResponse.java b/gss-api-app/src/main/java/com/devoops/dto/response/RepositorySaveResponse.java index 0569d172..13db244e 100644 --- a/gss-api-app/src/main/java/com/devoops/dto/response/RepositorySaveResponse.java +++ b/gss-api-app/src/main/java/com/devoops/dto/response/RepositorySaveResponse.java @@ -1,6 +1,6 @@ package com.devoops.dto.response; -import com.devoops.domain.entity.github.GithubRepository; +import com.devoops.domain.entity.github.repo.GithubRepository; import io.swagger.v3.oas.annotations.media.Schema; public record RepositorySaveResponse( diff --git a/gss-api-app/src/main/java/com/devoops/service/GitHubService.java b/gss-api-app/src/main/java/com/devoops/service/GitHubService.java index d8ad3ec4..668fab54 100644 --- a/gss-api-app/src/main/java/com/devoops/service/GitHubService.java +++ b/gss-api-app/src/main/java/com/devoops/service/GitHubService.java @@ -1,13 +1,13 @@ package com.devoops.service; import com.devoops.client.GitHubClient; -import com.devoops.domain.entity.github.GithubRepository; -import com.devoops.domain.entity.github.GithubToken; -import com.devoops.domain.entity.github.GithubWebhook; +import com.devoops.domain.entity.github.repo.GithubRepository; +import com.devoops.domain.entity.github.token.GithubToken; +import com.devoops.domain.entity.github.webhook.GithubWebhook; import com.devoops.domain.entity.user.User; -import com.devoops.domain.repository.github.GithubRepoDomainRepository; -import com.devoops.domain.repository.github.GithubTokenDomainRepository; -import com.devoops.domain.repository.github.GithubWebhookDomainRepository; +import com.devoops.domain.repository.github.repo.GithubRepoDomainRepository; +import com.devoops.domain.repository.github.token.GithubTokenDomainRepository; +import com.devoops.domain.repository.github.webhook.GithubWebhookDomainRepository; import com.devoops.dto.request.GitHubWebhookRequest; import com.devoops.dto.request.GithubRepoUrl; import com.devoops.dto.response.GithubPrResponse; diff --git a/gss-api-app/src/main/java/com/devoops/service/facade/AuthFacadeService.java b/gss-api-app/src/main/java/com/devoops/service/facade/AuthFacadeService.java index 4dc25689..41dead1e 100644 --- a/gss-api-app/src/main/java/com/devoops/service/facade/AuthFacadeService.java +++ b/gss-api-app/src/main/java/com/devoops/service/facade/AuthFacadeService.java @@ -1,6 +1,6 @@ package com.devoops.service.facade; -import com.devoops.domain.entity.github.GithubToken; +import com.devoops.domain.entity.github.token.GithubToken; import com.devoops.domain.entity.user.User; import com.devoops.dto.request.UserSaveRequest; import com.devoops.dto.response.AuthResponse; diff --git a/gss-api-app/src/main/java/com/devoops/service/facade/PullRequestFacadeService.java b/gss-api-app/src/main/java/com/devoops/service/facade/PullRequestFacadeService.java index 3757c54e..a8ea780d 100644 --- a/gss-api-app/src/main/java/com/devoops/service/facade/PullRequestFacadeService.java +++ b/gss-api-app/src/main/java/com/devoops/service/facade/PullRequestFacadeService.java @@ -1,9 +1,9 @@ package com.devoops.service.facade; -import com.devoops.domain.entity.github.AnswerRankings; -import com.devoops.domain.entity.github.PullRequest; +import com.devoops.domain.entity.github.answer.AnswerRankings; +import com.devoops.domain.entity.github.pr.PullRequest; import com.devoops.domain.entity.github.QuestionAnswer; -import com.devoops.domain.entity.github.RecordStatus; +import com.devoops.domain.entity.github.pr.RecordStatus; import com.devoops.dto.response.PullRequestDetailReadResponse; import com.devoops.dto.response.PullRequestRankingResponses; import com.devoops.dto.response.PullRequestReadResponse; diff --git a/gss-api-app/src/main/java/com/devoops/service/facade/QuestionFacadeService.java b/gss-api-app/src/main/java/com/devoops/service/facade/QuestionFacadeService.java index 388fc01c..74473e83 100644 --- a/gss-api-app/src/main/java/com/devoops/service/facade/QuestionFacadeService.java +++ b/gss-api-app/src/main/java/com/devoops/service/facade/QuestionFacadeService.java @@ -1,10 +1,10 @@ package com.devoops.service.facade; import com.devoops.command.request.AnswerUpdateCommand; -import com.devoops.domain.entity.github.Answer; -import com.devoops.domain.entity.github.Answers; -import com.devoops.domain.entity.github.PullRequest; -import com.devoops.domain.entity.github.RecordStatus; +import com.devoops.domain.entity.github.answer.Answer; +import com.devoops.domain.entity.github.answer.Answers; +import com.devoops.domain.entity.github.pr.PullRequest; +import com.devoops.domain.entity.github.pr.RecordStatus; import com.devoops.domain.entity.user.User; import com.devoops.dto.request.AnswerPutRequests; import com.devoops.service.answer.AnswerService; diff --git a/gss-api-app/src/main/java/com/devoops/service/facade/RepositoryFacadeService.java b/gss-api-app/src/main/java/com/devoops/service/facade/RepositoryFacadeService.java index 15fc84be..7c3976fd 100644 --- a/gss-api-app/src/main/java/com/devoops/service/facade/RepositoryFacadeService.java +++ b/gss-api-app/src/main/java/com/devoops/service/facade/RepositoryFacadeService.java @@ -3,8 +3,8 @@ import static com.devoops.Constants.INITIAL_PULL_REQUEST_COUNT; import com.devoops.command.request.RepositoryCreateCommand; -import com.devoops.domain.entity.github.GithubRepository; -import com.devoops.domain.entity.github.PullRequests; +import com.devoops.domain.entity.github.repo.GithubRepository; +import com.devoops.domain.entity.github.pr.PullRequests; import com.devoops.domain.entity.user.User; import com.devoops.dto.request.GithubRepoUrl; import com.devoops.dto.request.RepositorySaveRequest; diff --git a/gss-api-app/src/test/java/com/devoops/controller/question/QuestionControllerTest.java b/gss-api-app/src/test/java/com/devoops/controller/question/QuestionControllerTest.java index 6bb89425..901bcd7c 100644 --- a/gss-api-app/src/test/java/com/devoops/controller/question/QuestionControllerTest.java +++ b/gss-api-app/src/test/java/com/devoops/controller/question/QuestionControllerTest.java @@ -4,11 +4,11 @@ import static org.junit.jupiter.api.Assertions.assertAll; import com.devoops.BaseControllerTest; -import com.devoops.domain.entity.github.Answer; -import com.devoops.domain.entity.github.GithubRepository; -import com.devoops.domain.entity.github.PullRequest; -import com.devoops.domain.entity.github.Question; -import com.devoops.domain.entity.github.RecordStatus; +import com.devoops.domain.entity.github.answer.Answer; +import com.devoops.domain.entity.github.repo.GithubRepository; +import com.devoops.domain.entity.github.pr.PullRequest; +import com.devoops.domain.entity.github.question.Question; +import com.devoops.domain.entity.github.pr.RecordStatus; import com.devoops.domain.entity.user.User; import com.devoops.dto.request.AnswerPutRequest; import com.devoops.dto.request.AnswerPutRequests; diff --git a/gss-api-app/src/test/java/com/devoops/controller/repository/RepositoryControllerTest.java b/gss-api-app/src/test/java/com/devoops/controller/repository/RepositoryControllerTest.java index 43b19d2e..768be5f3 100644 --- a/gss-api-app/src/test/java/com/devoops/controller/repository/RepositoryControllerTest.java +++ b/gss-api-app/src/test/java/com/devoops/controller/repository/RepositoryControllerTest.java @@ -1,9 +1,9 @@ package com.devoops.controller.repository; import com.devoops.BaseControllerTest; -import com.devoops.domain.entity.github.GithubRepository; -import com.devoops.domain.entity.github.PullRequest; -import com.devoops.domain.entity.github.RecordStatus; +import com.devoops.domain.entity.github.repo.GithubRepository; +import com.devoops.domain.entity.github.pr.PullRequest; +import com.devoops.domain.entity.github.pr.RecordStatus; import com.devoops.domain.entity.user.User; import com.devoops.dto.request.RepositorySaveRequest; import com.devoops.service.auth.jwt.AccessToken; diff --git a/gss-api-app/src/test/java/com/devoops/service/GitHubServiceTest.java b/gss-api-app/src/test/java/com/devoops/service/GitHubServiceTest.java index df76cae2..d051c5af 100644 --- a/gss-api-app/src/test/java/com/devoops/service/GitHubServiceTest.java +++ b/gss-api-app/src/test/java/com/devoops/service/GitHubServiceTest.java @@ -1,14 +1,13 @@ package com.devoops.service; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.junit.jupiter.api.Assertions.*; import com.devoops.BaseServiceTest; import com.devoops.client.GitHubClient; -import com.devoops.domain.entity.github.GithubRepository; -import com.devoops.domain.entity.github.GithubWebhook; +import com.devoops.domain.entity.github.repo.GithubRepository; +import com.devoops.domain.entity.github.webhook.GithubWebhook; import com.devoops.domain.entity.user.User; -import com.devoops.domain.repository.github.GithubWebhookDomainRepository; +import com.devoops.domain.repository.github.webhook.GithubWebhookDomainRepository; import com.devoops.exception.custom.GssException; import com.devoops.exception.errorcode.ErrorCode; import org.junit.jupiter.api.Nested; diff --git a/gss-api-app/src/test/java/com/devoops/service/answerranking/AnswerRankingServiceTest.java b/gss-api-app/src/test/java/com/devoops/service/answerranking/AnswerRankingServiceTest.java index 83cb3f26..77546953 100644 --- a/gss-api-app/src/test/java/com/devoops/service/answerranking/AnswerRankingServiceTest.java +++ b/gss-api-app/src/test/java/com/devoops/service/answerranking/AnswerRankingServiceTest.java @@ -4,15 +4,15 @@ import static org.junit.jupiter.api.Assertions.assertAll; import com.devoops.BaseServiceTest; -import com.devoops.domain.entity.github.Answer; -import com.devoops.domain.entity.github.AnswerRanking; -import com.devoops.domain.entity.github.AnswerRankings; -import com.devoops.domain.entity.github.GithubRepository; -import com.devoops.domain.entity.github.PullRequest; -import com.devoops.domain.entity.github.Question; -import com.devoops.domain.entity.github.RecordStatus; +import com.devoops.domain.entity.github.answer.Answer; +import com.devoops.domain.entity.github.answer.AnswerRanking; +import com.devoops.domain.entity.github.answer.AnswerRankings; +import com.devoops.domain.entity.github.repo.GithubRepository; +import com.devoops.domain.entity.github.pr.PullRequest; +import com.devoops.domain.entity.github.question.Question; +import com.devoops.domain.entity.github.pr.RecordStatus; import com.devoops.domain.entity.user.User; -import com.devoops.domain.repository.github.AnswerRankingDomainRepository; +import com.devoops.domain.repository.github.answer.AnswerRankingDomainRepository; import java.time.LocalDateTime; import java.util.List; import org.junit.jupiter.api.Nested; diff --git a/gss-api-app/src/test/java/com/devoops/service/facade/PullRequestFacadeServiceTest.java b/gss-api-app/src/test/java/com/devoops/service/facade/PullRequestFacadeServiceTest.java index 7540ecd6..376bcff3 100644 --- a/gss-api-app/src/test/java/com/devoops/service/facade/PullRequestFacadeServiceTest.java +++ b/gss-api-app/src/test/java/com/devoops/service/facade/PullRequestFacadeServiceTest.java @@ -4,16 +4,14 @@ import static org.junit.jupiter.api.Assertions.assertAll; import com.devoops.BaseServiceTest; -import com.devoops.domain.entity.github.Answer; -import com.devoops.domain.entity.github.GithubRepository; -import com.devoops.domain.entity.github.PullRequest; -import com.devoops.domain.entity.github.Question; -import com.devoops.domain.entity.github.QuestionAnswer; -import com.devoops.domain.entity.github.RecordStatus; +import com.devoops.domain.entity.github.answer.Answer; +import com.devoops.domain.entity.github.repo.GithubRepository; +import com.devoops.domain.entity.github.pr.PullRequest; +import com.devoops.domain.entity.github.question.Question; +import com.devoops.domain.entity.github.pr.RecordStatus; import com.devoops.domain.entity.user.User; import com.devoops.dto.response.PullRequestReadResponse; import java.time.LocalDateTime; -import java.util.List; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; diff --git a/gss-api-app/src/test/java/com/devoops/service/facade/QuestionFacadeServiceTest.java b/gss-api-app/src/test/java/com/devoops/service/facade/QuestionFacadeServiceTest.java index fb2ce78a..de0b5e77 100644 --- a/gss-api-app/src/test/java/com/devoops/service/facade/QuestionFacadeServiceTest.java +++ b/gss-api-app/src/test/java/com/devoops/service/facade/QuestionFacadeServiceTest.java @@ -4,13 +4,13 @@ import static org.junit.jupiter.api.Assertions.assertAll; import com.devoops.BaseServiceTest; -import com.devoops.domain.entity.github.Answer; -import com.devoops.domain.entity.github.GithubRepository; -import com.devoops.domain.entity.github.PullRequest; -import com.devoops.domain.entity.github.Question; -import com.devoops.domain.entity.github.RecordStatus; +import com.devoops.domain.entity.github.answer.Answer; +import com.devoops.domain.entity.github.repo.GithubRepository; +import com.devoops.domain.entity.github.pr.PullRequest; +import com.devoops.domain.entity.github.question.Question; +import com.devoops.domain.entity.github.pr.RecordStatus; import com.devoops.domain.entity.user.User; -import com.devoops.domain.repository.github.PullRequestDomainRepository; +import com.devoops.domain.repository.github.pr.PullRequestDomainRepository; import com.devoops.dto.request.AnswerPutRequest; import com.devoops.dto.request.AnswerPutRequests; import java.time.LocalDateTime; diff --git a/gss-api-app/src/test/java/com/devoops/service/facade/RepositoryFacadeServiceTest.java b/gss-api-app/src/test/java/com/devoops/service/facade/RepositoryFacadeServiceTest.java index 3599bbd1..bca3da2d 100644 --- a/gss-api-app/src/test/java/com/devoops/service/facade/RepositoryFacadeServiceTest.java +++ b/gss-api-app/src/test/java/com/devoops/service/facade/RepositoryFacadeServiceTest.java @@ -10,9 +10,9 @@ import com.devoops.BaseServiceTest; import com.devoops.client.GitHubClient; -import com.devoops.domain.entity.github.GithubRepository; +import com.devoops.domain.entity.github.repo.GithubRepository; import com.devoops.domain.entity.user.User; -import com.devoops.domain.repository.github.GithubRepoDomainRepository; +import com.devoops.domain.repository.github.repo.GithubRepoDomainRepository; import com.devoops.dto.request.RepositorySaveRequest; import com.devoops.dto.response.GithubRepoInfoResponse; import com.devoops.dto.response.OwnerResponse; diff --git a/gss-api-app/src/test/java/com/devoops/service/pullrequests/PullRequestServiceTest.java b/gss-api-app/src/test/java/com/devoops/service/pullrequests/PullRequestServiceTest.java index 2813d5b4..9222b31b 100644 --- a/gss-api-app/src/test/java/com/devoops/service/pullrequests/PullRequestServiceTest.java +++ b/gss-api-app/src/test/java/com/devoops/service/pullrequests/PullRequestServiceTest.java @@ -3,9 +3,9 @@ import static org.assertj.core.api.Assertions.assertThat; import com.devoops.BaseServiceTest; -import com.devoops.domain.entity.github.GithubRepository; -import com.devoops.domain.entity.github.PullRequest; -import com.devoops.domain.entity.github.RecordStatus; +import com.devoops.domain.entity.github.repo.GithubRepository; +import com.devoops.domain.entity.github.pr.PullRequest; +import com.devoops.domain.entity.github.pr.RecordStatus; import com.devoops.domain.entity.user.User; import com.devoops.service.pullrequest.PullRequestService; import java.time.LocalDateTime; diff --git a/gss-api-app/src/test/java/com/devoops/service/question/QuestionServiceTest.java b/gss-api-app/src/test/java/com/devoops/service/question/QuestionServiceTest.java index a91c4659..411bf4ec 100644 --- a/gss-api-app/src/test/java/com/devoops/service/question/QuestionServiceTest.java +++ b/gss-api-app/src/test/java/com/devoops/service/question/QuestionServiceTest.java @@ -5,17 +5,14 @@ import com.devoops.BaseServiceTest; import com.devoops.command.request.AnswerUpdateCommand; -import com.devoops.domain.entity.github.Answer; -import com.devoops.domain.entity.github.Answers; -import com.devoops.domain.entity.github.GithubRepository; -import com.devoops.domain.entity.github.PullRequest; -import com.devoops.domain.entity.github.Question; +import com.devoops.domain.entity.github.answer.Answer; +import com.devoops.domain.entity.github.repo.GithubRepository; +import com.devoops.domain.entity.github.pr.PullRequest; +import com.devoops.domain.entity.github.question.Question; import com.devoops.domain.entity.github.QuestionAnswer; -import com.devoops.domain.entity.github.RecordStatus; +import com.devoops.domain.entity.github.pr.RecordStatus; import com.devoops.domain.entity.user.User; -import com.devoops.dto.request.AnswerPutRequest; -import com.devoops.dto.request.AnswerPutRequests; -import com.devoops.jpa.repository.github.AnswerJpaRepository; +import com.devoops.jpa.repository.github.answer.AnswerJpaRepository; import java.time.LocalDateTime; import java.util.List; import org.junit.jupiter.api.Nested; diff --git a/gss-api-app/src/test/java/com/devoops/service/repository/RepositoryServiceTest.java b/gss-api-app/src/test/java/com/devoops/service/repository/RepositoryServiceTest.java index d037d4de..2d25b073 100644 --- a/gss-api-app/src/test/java/com/devoops/service/repository/RepositoryServiceTest.java +++ b/gss-api-app/src/test/java/com/devoops/service/repository/RepositoryServiceTest.java @@ -5,21 +5,15 @@ import static org.junit.jupiter.api.Assertions.assertAll; import com.devoops.BaseServiceTest; -import com.devoops.domain.entity.github.Answer; -import com.devoops.domain.entity.github.AnswerRanking; -import com.devoops.domain.entity.github.AnswerRankings; -import com.devoops.domain.entity.github.GithubRepository; -import com.devoops.domain.entity.github.PullRequest; -import com.devoops.domain.entity.github.PullRequests; -import com.devoops.domain.entity.github.Question; -import com.devoops.domain.entity.github.QuestionAnswer; -import com.devoops.domain.entity.github.RecordStatus; +import com.devoops.domain.entity.github.repo.GithubRepository; +import com.devoops.domain.entity.github.pr.PullRequest; +import com.devoops.domain.entity.github.pr.RecordStatus; import com.devoops.domain.entity.user.User; -import com.devoops.domain.repository.github.AnswerDomainRepository; -import com.devoops.domain.repository.github.AnswerRankingDomainRepository; -import com.devoops.domain.repository.github.GithubRepoDomainRepository; -import com.devoops.domain.repository.github.PullRequestDomainRepository; -import com.devoops.domain.repository.github.QuestionDomainRepository; +import com.devoops.domain.repository.github.answer.AnswerDomainRepository; +import com.devoops.domain.repository.github.answer.AnswerRankingDomainRepository; +import com.devoops.domain.repository.github.repo.GithubRepoDomainRepository; +import com.devoops.domain.repository.github.pr.PullRequestDomainRepository; +import com.devoops.domain.repository.github.question.QuestionDomainRepository; import com.devoops.exception.custom.GssException; import com.devoops.exception.errorcode.ErrorCode; import java.time.LocalDateTime; diff --git a/gss-api-app/src/test/java/com/devoops/service/user/UserServiceTest.java b/gss-api-app/src/test/java/com/devoops/service/user/UserServiceTest.java index 16a54bd5..9095ef9c 100644 --- a/gss-api-app/src/test/java/com/devoops/service/user/UserServiceTest.java +++ b/gss-api-app/src/test/java/com/devoops/service/user/UserServiceTest.java @@ -3,7 +3,7 @@ import static org.assertj.core.api.Assertions.assertThat; import com.devoops.BaseServiceTest; -import com.devoops.domain.entity.github.GithubToken; +import com.devoops.domain.entity.github.token.GithubToken; import com.devoops.domain.entity.user.User; import com.devoops.domain.repository.user.UserDomainRepository; import org.junit.jupiter.api.Nested; diff --git a/gss-domain/src/main/java/com/devoops/command/request/PullRequestCreateCommand.java b/gss-domain/src/main/java/com/devoops/command/request/PullRequestCreateCommand.java index 8b02549f..50af3f4b 100644 --- a/gss-domain/src/main/java/com/devoops/command/request/PullRequestCreateCommand.java +++ b/gss-domain/src/main/java/com/devoops/command/request/PullRequestCreateCommand.java @@ -1,7 +1,7 @@ package com.devoops.command.request; -import com.devoops.domain.entity.github.PullRequest; -import com.devoops.domain.entity.github.RecordStatus; +import com.devoops.domain.entity.github.pr.PullRequest; +import com.devoops.domain.entity.github.pr.RecordStatus; import java.time.LocalDateTime; diff --git a/gss-domain/src/main/java/com/devoops/command/request/QuestionCreateCommand.java b/gss-domain/src/main/java/com/devoops/command/request/QuestionCreateCommand.java index 24e25f4b..cbc38faa 100644 --- a/gss-domain/src/main/java/com/devoops/command/request/QuestionCreateCommand.java +++ b/gss-domain/src/main/java/com/devoops/command/request/QuestionCreateCommand.java @@ -1,6 +1,6 @@ package com.devoops.command.request; -import com.devoops.domain.entity.github.Question; +import com.devoops.domain.entity.github.question.Question; public record QuestionCreateCommand( Long pullRequestId, diff --git a/gss-domain/src/main/java/com/devoops/command/request/RepositoryCreateCommand.java b/gss-domain/src/main/java/com/devoops/command/request/RepositoryCreateCommand.java index 636f7464..aa271691 100644 --- a/gss-domain/src/main/java/com/devoops/command/request/RepositoryCreateCommand.java +++ b/gss-domain/src/main/java/com/devoops/command/request/RepositoryCreateCommand.java @@ -1,6 +1,6 @@ package com.devoops.command.request; -import com.devoops.domain.entity.github.GithubRepository; +import com.devoops.domain.entity.github.repo.GithubRepository; public record RepositoryCreateCommand( long userId, diff --git a/gss-domain/src/main/java/com/devoops/domain/entity/github/Answer.java b/gss-domain/src/main/java/com/devoops/domain/entity/github/answer/Answer.java similarity index 89% rename from gss-domain/src/main/java/com/devoops/domain/entity/github/Answer.java rename to gss-domain/src/main/java/com/devoops/domain/entity/github/answer/Answer.java index b7c45b45..e4695cae 100644 --- a/gss-domain/src/main/java/com/devoops/domain/entity/github/Answer.java +++ b/gss-domain/src/main/java/com/devoops/domain/entity/github/answer/Answer.java @@ -1,4 +1,4 @@ -package com.devoops.domain.entity.github; +package com.devoops.domain.entity.github.answer; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/gss-domain/src/main/java/com/devoops/domain/entity/github/AnswerRanking.java b/gss-domain/src/main/java/com/devoops/domain/entity/github/answer/AnswerRanking.java similarity index 89% rename from gss-domain/src/main/java/com/devoops/domain/entity/github/AnswerRanking.java rename to gss-domain/src/main/java/com/devoops/domain/entity/github/answer/AnswerRanking.java index 17a8d746..653b39db 100644 --- a/gss-domain/src/main/java/com/devoops/domain/entity/github/AnswerRanking.java +++ b/gss-domain/src/main/java/com/devoops/domain/entity/github/answer/AnswerRanking.java @@ -1,4 +1,4 @@ -package com.devoops.domain.entity.github; +package com.devoops.domain.entity.github.answer; import java.time.LocalDateTime; import lombok.Getter; diff --git a/gss-domain/src/main/java/com/devoops/domain/entity/github/AnswerRankings.java b/gss-domain/src/main/java/com/devoops/domain/entity/github/answer/AnswerRankings.java similarity index 94% rename from gss-domain/src/main/java/com/devoops/domain/entity/github/AnswerRankings.java rename to gss-domain/src/main/java/com/devoops/domain/entity/github/answer/AnswerRankings.java index 1a762e77..8cc4bce7 100644 --- a/gss-domain/src/main/java/com/devoops/domain/entity/github/AnswerRankings.java +++ b/gss-domain/src/main/java/com/devoops/domain/entity/github/answer/AnswerRankings.java @@ -1,4 +1,4 @@ -package com.devoops.domain.entity.github; +package com.devoops.domain.entity.github.answer; import java.util.Comparator; import java.util.List; diff --git a/gss-domain/src/main/java/com/devoops/domain/entity/github/Answers.java b/gss-domain/src/main/java/com/devoops/domain/entity/github/answer/Answers.java similarity index 78% rename from gss-domain/src/main/java/com/devoops/domain/entity/github/Answers.java rename to gss-domain/src/main/java/com/devoops/domain/entity/github/answer/Answers.java index bf6d6872..d163f061 100644 --- a/gss-domain/src/main/java/com/devoops/domain/entity/github/Answers.java +++ b/gss-domain/src/main/java/com/devoops/domain/entity/github/answer/Answers.java @@ -1,4 +1,4 @@ -package com.devoops.domain.entity.github; +package com.devoops.domain.entity.github.answer; import java.util.List; import lombok.Getter; diff --git a/gss-domain/src/main/java/com/devoops/domain/entity/github/PullRequest.java b/gss-domain/src/main/java/com/devoops/domain/entity/github/pr/PullRequest.java similarity index 93% rename from gss-domain/src/main/java/com/devoops/domain/entity/github/PullRequest.java rename to gss-domain/src/main/java/com/devoops/domain/entity/github/pr/PullRequest.java index 564b8f35..008eda0f 100644 --- a/gss-domain/src/main/java/com/devoops/domain/entity/github/PullRequest.java +++ b/gss-domain/src/main/java/com/devoops/domain/entity/github/pr/PullRequest.java @@ -1,4 +1,4 @@ -package com.devoops.domain.entity.github; +package com.devoops.domain.entity.github.pr; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/gss-domain/src/main/java/com/devoops/domain/entity/github/PullRequests.java b/gss-domain/src/main/java/com/devoops/domain/entity/github/pr/PullRequests.java similarity index 81% rename from gss-domain/src/main/java/com/devoops/domain/entity/github/PullRequests.java rename to gss-domain/src/main/java/com/devoops/domain/entity/github/pr/PullRequests.java index 81d57471..ced28cb1 100644 --- a/gss-domain/src/main/java/com/devoops/domain/entity/github/PullRequests.java +++ b/gss-domain/src/main/java/com/devoops/domain/entity/github/pr/PullRequests.java @@ -1,4 +1,4 @@ -package com.devoops.domain.entity.github; +package com.devoops.domain.entity.github.pr; import java.util.List; import lombok.Getter; diff --git a/gss-domain/src/main/java/com/devoops/domain/entity/github/RecordStatus.java b/gss-domain/src/main/java/com/devoops/domain/entity/github/pr/RecordStatus.java similarity index 62% rename from gss-domain/src/main/java/com/devoops/domain/entity/github/RecordStatus.java rename to gss-domain/src/main/java/com/devoops/domain/entity/github/pr/RecordStatus.java index e4c309a4..c485d334 100644 --- a/gss-domain/src/main/java/com/devoops/domain/entity/github/RecordStatus.java +++ b/gss-domain/src/main/java/com/devoops/domain/entity/github/pr/RecordStatus.java @@ -1,4 +1,4 @@ -package com.devoops.domain.entity.github; +package com.devoops.domain.entity.github.pr; public enum RecordStatus { diff --git a/gss-domain/src/main/java/com/devoops/domain/entity/github/Question.java b/gss-domain/src/main/java/com/devoops/domain/entity/github/question/Question.java similarity index 89% rename from gss-domain/src/main/java/com/devoops/domain/entity/github/Question.java rename to gss-domain/src/main/java/com/devoops/domain/entity/github/question/Question.java index 6e9c0998..d58d4de5 100644 --- a/gss-domain/src/main/java/com/devoops/domain/entity/github/Question.java +++ b/gss-domain/src/main/java/com/devoops/domain/entity/github/question/Question.java @@ -1,4 +1,4 @@ -package com.devoops.domain.entity.github; +package com.devoops.domain.entity.github.question; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/gss-domain/src/main/java/com/devoops/domain/entity/github/GithubRepository.java b/gss-domain/src/main/java/com/devoops/domain/entity/github/repo/GithubRepository.java similarity index 94% rename from gss-domain/src/main/java/com/devoops/domain/entity/github/GithubRepository.java rename to gss-domain/src/main/java/com/devoops/domain/entity/github/repo/GithubRepository.java index 6aa85850..68ff9ae8 100644 --- a/gss-domain/src/main/java/com/devoops/domain/entity/github/GithubRepository.java +++ b/gss-domain/src/main/java/com/devoops/domain/entity/github/repo/GithubRepository.java @@ -1,4 +1,4 @@ -package com.devoops.domain.entity.github; +package com.devoops.domain.entity.github.repo; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/gss-domain/src/main/java/com/devoops/domain/entity/github/GithubToken.java b/gss-domain/src/main/java/com/devoops/domain/entity/github/token/GithubToken.java similarity index 76% rename from gss-domain/src/main/java/com/devoops/domain/entity/github/GithubToken.java rename to gss-domain/src/main/java/com/devoops/domain/entity/github/token/GithubToken.java index 9bab6be2..f6744935 100644 --- a/gss-domain/src/main/java/com/devoops/domain/entity/github/GithubToken.java +++ b/gss-domain/src/main/java/com/devoops/domain/entity/github/token/GithubToken.java @@ -1,4 +1,4 @@ -package com.devoops.domain.entity.github; +package com.devoops.domain.entity.github.token; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/gss-domain/src/main/java/com/devoops/domain/entity/github/GithubWebhook.java b/gss-domain/src/main/java/com/devoops/domain/entity/github/webhook/GithubWebhook.java similarity index 87% rename from gss-domain/src/main/java/com/devoops/domain/entity/github/GithubWebhook.java rename to gss-domain/src/main/java/com/devoops/domain/entity/github/webhook/GithubWebhook.java index 5be3fe32..f5aeedb9 100644 --- a/gss-domain/src/main/java/com/devoops/domain/entity/github/GithubWebhook.java +++ b/gss-domain/src/main/java/com/devoops/domain/entity/github/webhook/GithubWebhook.java @@ -1,4 +1,4 @@ -package com.devoops.domain.entity.github; +package com.devoops.domain.entity.github.webhook; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/gss-domain/src/main/java/com/devoops/domain/entity/user/User.java b/gss-domain/src/main/java/com/devoops/domain/entity/user/User.java index e68342a9..275190a4 100644 --- a/gss-domain/src/main/java/com/devoops/domain/entity/user/User.java +++ b/gss-domain/src/main/java/com/devoops/domain/entity/user/User.java @@ -1,6 +1,6 @@ package com.devoops.domain.entity.user; -import com.devoops.domain.entity.github.GithubToken; +import com.devoops.domain.entity.github.token.GithubToken; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/gss-domain/src/main/java/com/devoops/domain/repository/github/AnswerDomainRepository.java b/gss-domain/src/main/java/com/devoops/domain/repository/github/answer/AnswerDomainRepository.java similarity index 72% rename from gss-domain/src/main/java/com/devoops/domain/repository/github/AnswerDomainRepository.java rename to gss-domain/src/main/java/com/devoops/domain/repository/github/answer/AnswerDomainRepository.java index f4a35764..50da0e7c 100644 --- a/gss-domain/src/main/java/com/devoops/domain/repository/github/AnswerDomainRepository.java +++ b/gss-domain/src/main/java/com/devoops/domain/repository/github/answer/AnswerDomainRepository.java @@ -1,7 +1,7 @@ -package com.devoops.domain.repository.github; +package com.devoops.domain.repository.github.answer; -import com.devoops.domain.entity.github.Answer; -import com.devoops.domain.entity.github.Question; +import com.devoops.domain.entity.github.answer.Answer; +import com.devoops.domain.entity.github.question.Question; import java.util.List; import java.util.Optional; diff --git a/gss-domain/src/main/java/com/devoops/domain/repository/github/AnswerRankingDomainRepository.java b/gss-domain/src/main/java/com/devoops/domain/repository/github/answer/AnswerRankingDomainRepository.java similarity index 51% rename from gss-domain/src/main/java/com/devoops/domain/repository/github/AnswerRankingDomainRepository.java rename to gss-domain/src/main/java/com/devoops/domain/repository/github/answer/AnswerRankingDomainRepository.java index 3a0ff5d0..d25296dd 100644 --- a/gss-domain/src/main/java/com/devoops/domain/repository/github/AnswerRankingDomainRepository.java +++ b/gss-domain/src/main/java/com/devoops/domain/repository/github/answer/AnswerRankingDomainRepository.java @@ -1,9 +1,9 @@ -package com.devoops.domain.repository.github; +package com.devoops.domain.repository.github.answer; -import com.devoops.domain.entity.github.Answer; -import com.devoops.domain.entity.github.AnswerRanking; -import com.devoops.domain.entity.github.AnswerRankings; -import com.devoops.domain.entity.github.PullRequests; +import com.devoops.domain.entity.github.answer.Answer; +import com.devoops.domain.entity.github.answer.AnswerRanking; +import com.devoops.domain.entity.github.answer.AnswerRankings; +import com.devoops.domain.entity.github.pr.PullRequests; public interface AnswerRankingDomainRepository { diff --git a/gss-domain/src/main/java/com/devoops/domain/repository/github/PullRequestDomainRepository.java b/gss-domain/src/main/java/com/devoops/domain/repository/github/pr/PullRequestDomainRepository.java similarity index 74% rename from gss-domain/src/main/java/com/devoops/domain/repository/github/PullRequestDomainRepository.java rename to gss-domain/src/main/java/com/devoops/domain/repository/github/pr/PullRequestDomainRepository.java index 71311db7..74cd3571 100644 --- a/gss-domain/src/main/java/com/devoops/domain/repository/github/PullRequestDomainRepository.java +++ b/gss-domain/src/main/java/com/devoops/domain/repository/github/pr/PullRequestDomainRepository.java @@ -1,9 +1,8 @@ -package com.devoops.domain.repository.github; +package com.devoops.domain.repository.github.pr; -import com.devoops.domain.entity.github.PullRequest; -import com.devoops.domain.entity.github.PullRequests; -import com.devoops.domain.entity.github.RecordStatus; -import java.util.List; +import com.devoops.domain.entity.github.pr.PullRequest; +import com.devoops.domain.entity.github.pr.PullRequests; +import com.devoops.domain.entity.github.pr.RecordStatus; public interface PullRequestDomainRepository { diff --git a/gss-domain/src/main/java/com/devoops/domain/repository/github/QuestionDomainRepository.java b/gss-domain/src/main/java/com/devoops/domain/repository/github/question/QuestionDomainRepository.java similarity index 72% rename from gss-domain/src/main/java/com/devoops/domain/repository/github/QuestionDomainRepository.java rename to gss-domain/src/main/java/com/devoops/domain/repository/github/question/QuestionDomainRepository.java index 1fe67f79..1ca59cdb 100644 --- a/gss-domain/src/main/java/com/devoops/domain/repository/github/QuestionDomainRepository.java +++ b/gss-domain/src/main/java/com/devoops/domain/repository/github/question/QuestionDomainRepository.java @@ -1,7 +1,7 @@ -package com.devoops.domain.repository.github; +package com.devoops.domain.repository.github.question; -import com.devoops.domain.entity.github.PullRequests; -import com.devoops.domain.entity.github.Question; +import com.devoops.domain.entity.github.pr.PullRequests; +import com.devoops.domain.entity.github.question.Question; import com.devoops.domain.entity.github.QuestionAnswer; import java.util.List; diff --git a/gss-domain/src/main/java/com/devoops/domain/repository/github/GithubRepoDomainRepository.java b/gss-domain/src/main/java/com/devoops/domain/repository/github/repo/GithubRepoDomainRepository.java similarity index 82% rename from gss-domain/src/main/java/com/devoops/domain/repository/github/GithubRepoDomainRepository.java rename to gss-domain/src/main/java/com/devoops/domain/repository/github/repo/GithubRepoDomainRepository.java index 5f4a602c..c1aca7b4 100644 --- a/gss-domain/src/main/java/com/devoops/domain/repository/github/GithubRepoDomainRepository.java +++ b/gss-domain/src/main/java/com/devoops/domain/repository/github/repo/GithubRepoDomainRepository.java @@ -1,6 +1,6 @@ -package com.devoops.domain.repository.github; +package com.devoops.domain.repository.github.repo; -import com.devoops.domain.entity.github.GithubRepository; +import com.devoops.domain.entity.github.repo.GithubRepository; import java.util.List; diff --git a/gss-domain/src/main/java/com/devoops/domain/repository/github/GithubTokenDomainRepository.java b/gss-domain/src/main/java/com/devoops/domain/repository/github/token/GithubTokenDomainRepository.java similarity index 60% rename from gss-domain/src/main/java/com/devoops/domain/repository/github/GithubTokenDomainRepository.java rename to gss-domain/src/main/java/com/devoops/domain/repository/github/token/GithubTokenDomainRepository.java index 0308f12d..07062ad0 100644 --- a/gss-domain/src/main/java/com/devoops/domain/repository/github/GithubTokenDomainRepository.java +++ b/gss-domain/src/main/java/com/devoops/domain/repository/github/token/GithubTokenDomainRepository.java @@ -1,10 +1,8 @@ -package com.devoops.domain.repository.github; +package com.devoops.domain.repository.github.token; -import com.devoops.domain.entity.github.GithubToken; +import com.devoops.domain.entity.github.token.GithubToken; import com.devoops.domain.entity.user.User; -import java.util.Optional; - public interface GithubTokenDomainRepository { GithubToken save(GithubToken token, User user); diff --git a/gss-domain/src/main/java/com/devoops/domain/repository/github/GithubWebhookDomainRepository.java b/gss-domain/src/main/java/com/devoops/domain/repository/github/webhook/GithubWebhookDomainRepository.java similarity index 63% rename from gss-domain/src/main/java/com/devoops/domain/repository/github/GithubWebhookDomainRepository.java rename to gss-domain/src/main/java/com/devoops/domain/repository/github/webhook/GithubWebhookDomainRepository.java index d85a3292..1794f784 100644 --- a/gss-domain/src/main/java/com/devoops/domain/repository/github/GithubWebhookDomainRepository.java +++ b/gss-domain/src/main/java/com/devoops/domain/repository/github/webhook/GithubWebhookDomainRepository.java @@ -1,6 +1,6 @@ -package com.devoops.domain.repository.github; +package com.devoops.domain.repository.github.webhook; -import com.devoops.domain.entity.github.GithubWebhook; +import com.devoops.domain.entity.github.webhook.GithubWebhook; public interface GithubWebhookDomainRepository { diff --git a/gss-domain/src/main/java/com/devoops/jpa/entity/github/AnswerEntity.java b/gss-domain/src/main/java/com/devoops/jpa/entity/github/answer/AnswerEntity.java similarity index 83% rename from gss-domain/src/main/java/com/devoops/jpa/entity/github/AnswerEntity.java rename to gss-domain/src/main/java/com/devoops/jpa/entity/github/answer/AnswerEntity.java index 0ecf3aee..da1ce828 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/entity/github/AnswerEntity.java +++ b/gss-domain/src/main/java/com/devoops/jpa/entity/github/answer/AnswerEntity.java @@ -1,17 +1,12 @@ -package com.devoops.jpa.entity.github; +package com.devoops.jpa.entity.github.answer; -import com.devoops.domain.entity.github.Answer; +import com.devoops.domain.entity.github.answer.Answer; import com.devoops.jpa.entity.BaseTimeEntity; import jakarta.persistence.Column; -import jakarta.persistence.ConstraintMode; import jakarta.persistence.Entity; -import jakarta.persistence.FetchType; -import jakarta.persistence.ForeignKey; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.OneToOne; import jakarta.persistence.Table; import jakarta.validation.constraints.NotNull; import java.time.LocalDateTime; diff --git a/gss-domain/src/main/java/com/devoops/jpa/entity/github/AnswerRankingEntity.java b/gss-domain/src/main/java/com/devoops/jpa/entity/github/answer/AnswerRankingEntity.java similarity index 91% rename from gss-domain/src/main/java/com/devoops/jpa/entity/github/AnswerRankingEntity.java rename to gss-domain/src/main/java/com/devoops/jpa/entity/github/answer/AnswerRankingEntity.java index b0bc46e8..c16b88b1 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/entity/github/AnswerRankingEntity.java +++ b/gss-domain/src/main/java/com/devoops/jpa/entity/github/answer/AnswerRankingEntity.java @@ -1,7 +1,7 @@ -package com.devoops.jpa.entity.github; +package com.devoops.jpa.entity.github.answer; -import com.devoops.domain.entity.github.Answer; -import com.devoops.domain.entity.github.AnswerRanking; +import com.devoops.domain.entity.github.answer.AnswerRanking; +import com.devoops.jpa.entity.github.question.QuestionEntity; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; diff --git a/gss-domain/src/main/java/com/devoops/jpa/entity/github/PullRequestEntity.java b/gss-domain/src/main/java/com/devoops/jpa/entity/github/pr/PullRequestEntity.java similarity index 94% rename from gss-domain/src/main/java/com/devoops/jpa/entity/github/PullRequestEntity.java rename to gss-domain/src/main/java/com/devoops/jpa/entity/github/pr/PullRequestEntity.java index 084aa2cd..81b48f2b 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/entity/github/PullRequestEntity.java +++ b/gss-domain/src/main/java/com/devoops/jpa/entity/github/pr/PullRequestEntity.java @@ -1,7 +1,7 @@ -package com.devoops.jpa.entity.github; +package com.devoops.jpa.entity.github.pr; -import com.devoops.domain.entity.github.PullRequest; -import com.devoops.domain.entity.github.RecordStatus; +import com.devoops.domain.entity.github.pr.PullRequest; +import com.devoops.domain.entity.github.pr.RecordStatus; import com.devoops.jpa.entity.BaseTimeEntity; import jakarta.persistence.Column; import jakarta.persistence.Entity; diff --git a/gss-domain/src/main/java/com/devoops/jpa/entity/github/QuestionEntity.java b/gss-domain/src/main/java/com/devoops/jpa/entity/github/question/QuestionEntity.java similarity index 82% rename from gss-domain/src/main/java/com/devoops/jpa/entity/github/QuestionEntity.java rename to gss-domain/src/main/java/com/devoops/jpa/entity/github/question/QuestionEntity.java index 033b7561..5862d05f 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/entity/github/QuestionEntity.java +++ b/gss-domain/src/main/java/com/devoops/jpa/entity/github/question/QuestionEntity.java @@ -1,17 +1,12 @@ -package com.devoops.jpa.entity.github; +package com.devoops.jpa.entity.github.question; -import com.devoops.domain.entity.github.Question; +import com.devoops.domain.entity.github.question.Question; import com.devoops.jpa.entity.BaseTimeEntity; import jakarta.persistence.Column; -import jakarta.persistence.ConstraintMode; import jakarta.persistence.Entity; -import jakarta.persistence.FetchType; -import jakarta.persistence.ForeignKey; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; import jakarta.validation.constraints.NotNull; import lombok.AccessLevel; diff --git a/gss-domain/src/main/java/com/devoops/jpa/entity/github/GithubRepositoryEntity.java b/gss-domain/src/main/java/com/devoops/jpa/entity/github/repo/GithubRepositoryEntity.java similarity index 95% rename from gss-domain/src/main/java/com/devoops/jpa/entity/github/GithubRepositoryEntity.java rename to gss-domain/src/main/java/com/devoops/jpa/entity/github/repo/GithubRepositoryEntity.java index 8f06c25d..cb19269d 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/entity/github/GithubRepositoryEntity.java +++ b/gss-domain/src/main/java/com/devoops/jpa/entity/github/repo/GithubRepositoryEntity.java @@ -1,6 +1,6 @@ -package com.devoops.jpa.entity.github; +package com.devoops.jpa.entity.github.repo; -import com.devoops.domain.entity.github.GithubRepository; +import com.devoops.domain.entity.github.repo.GithubRepository; import com.devoops.jpa.entity.BaseTimeEntity; import jakarta.persistence.Column; import jakarta.persistence.Entity; diff --git a/gss-domain/src/main/java/com/devoops/jpa/entity/github/GithubTokenEntity.java b/gss-domain/src/main/java/com/devoops/jpa/entity/github/token/GithubTokenEntity.java similarity index 77% rename from gss-domain/src/main/java/com/devoops/jpa/entity/github/GithubTokenEntity.java rename to gss-domain/src/main/java/com/devoops/jpa/entity/github/token/GithubTokenEntity.java index e20ddb04..5cc3e2e8 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/entity/github/GithubTokenEntity.java +++ b/gss-domain/src/main/java/com/devoops/jpa/entity/github/token/GithubTokenEntity.java @@ -1,17 +1,12 @@ -package com.devoops.jpa.entity.github; +package com.devoops.jpa.entity.github.token; -import com.devoops.domain.entity.github.GithubToken; -import com.devoops.jpa.entity.user.UserEntity; +import com.devoops.domain.entity.github.token.GithubToken; import jakarta.annotation.Nonnull; import jakarta.persistence.Column; -import jakarta.persistence.ConstraintMode; import jakarta.persistence.Entity; -import jakarta.persistence.ForeignKey; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.OneToOne; import jakarta.persistence.Table; import lombok.AccessLevel; import lombok.AllArgsConstructor; diff --git a/gss-domain/src/main/java/com/devoops/jpa/entity/github/GithubWebhookEntity.java b/gss-domain/src/main/java/com/devoops/jpa/entity/github/webhook/GithubWebhookEntity.java similarity index 89% rename from gss-domain/src/main/java/com/devoops/jpa/entity/github/GithubWebhookEntity.java rename to gss-domain/src/main/java/com/devoops/jpa/entity/github/webhook/GithubWebhookEntity.java index 76f6a65c..243a6d3c 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/entity/github/GithubWebhookEntity.java +++ b/gss-domain/src/main/java/com/devoops/jpa/entity/github/webhook/GithubWebhookEntity.java @@ -1,6 +1,6 @@ -package com.devoops.jpa.entity.github; +package com.devoops.jpa.entity.github.webhook; -import com.devoops.domain.entity.github.GithubWebhook; +import com.devoops.domain.entity.github.webhook.GithubWebhook; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; diff --git a/gss-domain/src/main/java/com/devoops/jpa/entity/user/UserEntity.java b/gss-domain/src/main/java/com/devoops/jpa/entity/user/UserEntity.java index 6475c488..6ea042d4 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/entity/user/UserEntity.java +++ b/gss-domain/src/main/java/com/devoops/jpa/entity/user/UserEntity.java @@ -1,6 +1,6 @@ package com.devoops.jpa.entity.user; -import com.devoops.domain.entity.github.GithubToken; +import com.devoops.domain.entity.github.token.GithubToken; import com.devoops.domain.entity.user.User; import jakarta.persistence.Column; import jakarta.persistence.Entity; diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/AnswerDomainRepositoryImpl.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/answer/AnswerDomainRepositoryImpl.java similarity index 87% rename from gss-domain/src/main/java/com/devoops/jpa/repository/github/AnswerDomainRepositoryImpl.java rename to gss-domain/src/main/java/com/devoops/jpa/repository/github/answer/AnswerDomainRepositoryImpl.java index e6ec8e8a..786ed4e1 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/AnswerDomainRepositoryImpl.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/answer/AnswerDomainRepositoryImpl.java @@ -1,14 +1,13 @@ -package com.devoops.jpa.repository.github; +package com.devoops.jpa.repository.github.answer; -import com.devoops.domain.entity.github.Answer; -import com.devoops.domain.entity.github.Question; -import com.devoops.domain.repository.github.AnswerDomainRepository; +import com.devoops.domain.entity.github.answer.Answer; +import com.devoops.domain.entity.github.question.Question; +import com.devoops.domain.repository.github.answer.AnswerDomainRepository; import com.devoops.exception.custom.GssException; import com.devoops.exception.errorcode.ErrorCode; -import com.devoops.jpa.entity.github.AnswerEntity; +import com.devoops.jpa.entity.github.answer.AnswerEntity; import java.util.List; import java.util.Optional; -import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/AnswerJpaRepository.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/answer/AnswerJpaRepository.java similarity index 89% rename from gss-domain/src/main/java/com/devoops/jpa/repository/github/AnswerJpaRepository.java rename to gss-domain/src/main/java/com/devoops/jpa/repository/github/answer/AnswerJpaRepository.java index e03c604e..592ccba0 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/AnswerJpaRepository.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/answer/AnswerJpaRepository.java @@ -1,6 +1,6 @@ -package com.devoops.jpa.repository.github; +package com.devoops.jpa.repository.github.answer; -import com.devoops.jpa.entity.github.AnswerEntity; +import com.devoops.jpa.entity.github.answer.AnswerEntity; import java.util.List; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/AnswerRankingDomainRepositoryImpl.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/answer/AnswerRankingDomainRepositoryImpl.java similarity index 80% rename from gss-domain/src/main/java/com/devoops/jpa/repository/github/AnswerRankingDomainRepositoryImpl.java rename to gss-domain/src/main/java/com/devoops/jpa/repository/github/answer/AnswerRankingDomainRepositoryImpl.java index 25d58fe4..55679d49 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/AnswerRankingDomainRepositoryImpl.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/answer/AnswerRankingDomainRepositoryImpl.java @@ -1,16 +1,18 @@ -package com.devoops.jpa.repository.github; +package com.devoops.jpa.repository.github.answer; -import com.devoops.domain.entity.github.Answer; -import com.devoops.domain.entity.github.AnswerRanking; -import com.devoops.domain.entity.github.AnswerRankings; -import com.devoops.domain.entity.github.PullRequest; -import com.devoops.domain.entity.github.PullRequests; -import com.devoops.domain.repository.github.AnswerRankingDomainRepository; +import com.devoops.domain.entity.github.answer.Answer; +import com.devoops.domain.entity.github.answer.AnswerRanking; +import com.devoops.domain.entity.github.answer.AnswerRankings; +import com.devoops.domain.entity.github.pr.PullRequest; +import com.devoops.domain.entity.github.pr.PullRequests; +import com.devoops.domain.repository.github.answer.AnswerRankingDomainRepository; import com.devoops.exception.custom.GssException; import com.devoops.exception.errorcode.ErrorCode; -import com.devoops.jpa.entity.github.AnswerRankingEntity; -import com.devoops.jpa.entity.github.PullRequestEntity; -import com.devoops.jpa.entity.github.QuestionEntity; +import com.devoops.jpa.entity.github.answer.AnswerRankingEntity; +import com.devoops.jpa.entity.github.pr.PullRequestEntity; +import com.devoops.jpa.entity.github.question.QuestionEntity; +import com.devoops.jpa.repository.github.pr.PullRequestJpaRepository; +import com.devoops.jpa.repository.github.question.QuestionJpaRepository; import java.time.LocalDateTime; import java.util.List; import java.util.stream.Collectors; diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/AnswerRankingJpaRepository.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/answer/AnswerRankingJpaRepository.java similarity index 78% rename from gss-domain/src/main/java/com/devoops/jpa/repository/github/AnswerRankingJpaRepository.java rename to gss-domain/src/main/java/com/devoops/jpa/repository/github/answer/AnswerRankingJpaRepository.java index daa300e4..4fe95a4c 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/AnswerRankingJpaRepository.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/answer/AnswerRankingJpaRepository.java @@ -1,6 +1,6 @@ -package com.devoops.jpa.repository.github; +package com.devoops.jpa.repository.github.answer; -import com.devoops.jpa.entity.github.AnswerRankingEntity; +import com.devoops.jpa.entity.github.answer.AnswerRankingEntity; import java.util.List; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/PullRequestDomainRepositoryImpl.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/pr/PullRequestDomainRepositoryImpl.java similarity index 88% rename from gss-domain/src/main/java/com/devoops/jpa/repository/github/PullRequestDomainRepositoryImpl.java rename to gss-domain/src/main/java/com/devoops/jpa/repository/github/pr/PullRequestDomainRepositoryImpl.java index 01ffa800..6b990595 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/PullRequestDomainRepositoryImpl.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/pr/PullRequestDomainRepositoryImpl.java @@ -1,14 +1,16 @@ -package com.devoops.jpa.repository.github; +package com.devoops.jpa.repository.github.pr; -import com.devoops.domain.entity.github.PullRequest; -import com.devoops.domain.entity.github.PullRequests; -import com.devoops.domain.entity.github.RecordStatus; -import com.devoops.domain.repository.github.PullRequestDomainRepository; +import com.devoops.domain.entity.github.pr.PullRequest; +import com.devoops.domain.entity.github.pr.PullRequests; +import com.devoops.domain.entity.github.pr.RecordStatus; +import com.devoops.domain.repository.github.pr.PullRequestDomainRepository; import com.devoops.exception.custom.GssException; import com.devoops.exception.errorcode.ErrorCode; -import com.devoops.jpa.entity.github.GithubRepositoryEntity; -import com.devoops.jpa.entity.github.PullRequestEntity; -import com.devoops.jpa.entity.github.QuestionEntity; +import com.devoops.jpa.entity.github.repo.GithubRepositoryEntity; +import com.devoops.jpa.entity.github.pr.PullRequestEntity; +import com.devoops.jpa.entity.github.question.QuestionEntity; +import com.devoops.jpa.repository.github.question.QuestionJpaRepository; +import com.devoops.jpa.repository.github.repo.GithubRepoJpaRepository; import java.util.List; import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/PullRequestJpaRepository.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/pr/PullRequestJpaRepository.java similarity index 84% rename from gss-domain/src/main/java/com/devoops/jpa/repository/github/PullRequestJpaRepository.java rename to gss-domain/src/main/java/com/devoops/jpa/repository/github/pr/PullRequestJpaRepository.java index c4a2d75b..911df779 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/PullRequestJpaRepository.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/pr/PullRequestJpaRepository.java @@ -1,6 +1,6 @@ -package com.devoops.jpa.repository.github; +package com.devoops.jpa.repository.github.pr; -import com.devoops.jpa.entity.github.PullRequestEntity; +import com.devoops.jpa.entity.github.pr.PullRequestEntity; import java.util.List; import java.util.Optional; import org.springframework.data.domain.Page; diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/QuestionDomainRepositoryImpl.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/question/QuestionDomainRepositoryImpl.java similarity index 86% rename from gss-domain/src/main/java/com/devoops/jpa/repository/github/QuestionDomainRepositoryImpl.java rename to gss-domain/src/main/java/com/devoops/jpa/repository/github/question/QuestionDomainRepositoryImpl.java index e2e996db..39e23896 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/QuestionDomainRepositoryImpl.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/question/QuestionDomainRepositoryImpl.java @@ -1,13 +1,13 @@ -package com.devoops.jpa.repository.github; +package com.devoops.jpa.repository.github.question; -import com.devoops.domain.entity.github.PullRequest; -import com.devoops.domain.entity.github.PullRequests; -import com.devoops.domain.entity.github.Question; +import com.devoops.domain.entity.github.pr.PullRequest; +import com.devoops.domain.entity.github.pr.PullRequests; +import com.devoops.domain.entity.github.question.Question; import com.devoops.domain.entity.github.QuestionAnswer; -import com.devoops.domain.repository.github.QuestionDomainRepository; +import com.devoops.domain.repository.github.question.QuestionDomainRepository; import com.devoops.exception.custom.GssException; import com.devoops.exception.errorcode.ErrorCode; -import com.devoops.jpa.entity.github.QuestionEntity; +import com.devoops.jpa.entity.github.question.QuestionEntity; import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/QuestionJpaRepository.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/question/QuestionJpaRepository.java similarity index 91% rename from gss-domain/src/main/java/com/devoops/jpa/repository/github/QuestionJpaRepository.java rename to gss-domain/src/main/java/com/devoops/jpa/repository/github/question/QuestionJpaRepository.java index 1636ba55..2dd0d921 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/QuestionJpaRepository.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/question/QuestionJpaRepository.java @@ -1,7 +1,7 @@ -package com.devoops.jpa.repository.github; +package com.devoops.jpa.repository.github.question; import com.devoops.domain.entity.github.QuestionAnswer; -import com.devoops.jpa.entity.github.QuestionEntity; +import com.devoops.jpa.entity.github.question.QuestionEntity; import java.util.List; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubRepoDomainRepositoryImpl.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoDomainRepositoryImpl.java similarity index 91% rename from gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubRepoDomainRepositoryImpl.java rename to gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoDomainRepositoryImpl.java index 83054c74..ee1f6d19 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubRepoDomainRepositoryImpl.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoDomainRepositoryImpl.java @@ -1,11 +1,10 @@ -package com.devoops.jpa.repository.github; +package com.devoops.jpa.repository.github.repo; -import com.devoops.domain.entity.github.GithubRepository; -import com.devoops.domain.repository.github.GithubRepoDomainRepository; +import com.devoops.domain.entity.github.repo.GithubRepository; +import com.devoops.domain.repository.github.repo.GithubRepoDomainRepository; import com.devoops.exception.custom.GssException; import com.devoops.exception.errorcode.ErrorCode; -import com.devoops.jpa.entity.github.GithubRepositoryEntity; -import java.util.Optional; +import com.devoops.jpa.entity.github.repo.GithubRepositoryEntity; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubRepoJpaRepository.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoJpaRepository.java similarity index 83% rename from gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubRepoJpaRepository.java rename to gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoJpaRepository.java index 3cdcd61d..61c8c78b 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubRepoJpaRepository.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoJpaRepository.java @@ -1,6 +1,6 @@ -package com.devoops.jpa.repository.github; +package com.devoops.jpa.repository.github.repo; -import com.devoops.jpa.entity.github.GithubRepositoryEntity; +import com.devoops.jpa.entity.github.repo.GithubRepositoryEntity; import java.util.List; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubTokenDomainRepositoryImpl.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/token/GithubTokenDomainRepositoryImpl.java similarity index 80% rename from gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubTokenDomainRepositoryImpl.java rename to gss-domain/src/main/java/com/devoops/jpa/repository/github/token/GithubTokenDomainRepositoryImpl.java index 2fa5da9c..88f83ebe 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubTokenDomainRepositoryImpl.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/token/GithubTokenDomainRepositoryImpl.java @@ -1,12 +1,11 @@ -package com.devoops.jpa.repository.github; +package com.devoops.jpa.repository.github.token; -import com.devoops.domain.entity.github.GithubToken; +import com.devoops.domain.entity.github.token.GithubToken; import com.devoops.domain.entity.user.User; -import com.devoops.domain.repository.github.GithubTokenDomainRepository; +import com.devoops.domain.repository.github.token.GithubTokenDomainRepository; import com.devoops.exception.custom.GssException; import com.devoops.exception.errorcode.ErrorCode; -import com.devoops.jpa.entity.github.GithubTokenEntity; -import java.util.Optional; +import com.devoops.jpa.entity.github.token.GithubTokenEntity; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubTokenJpaRepository.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/token/GithubTokenJpaRepository.java similarity index 68% rename from gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubTokenJpaRepository.java rename to gss-domain/src/main/java/com/devoops/jpa/repository/github/token/GithubTokenJpaRepository.java index 144eb23c..26087f2a 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubTokenJpaRepository.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/token/GithubTokenJpaRepository.java @@ -1,6 +1,6 @@ -package com.devoops.jpa.repository.github; +package com.devoops.jpa.repository.github.token; -import com.devoops.jpa.entity.github.GithubTokenEntity; +import com.devoops.jpa.entity.github.token.GithubTokenEntity; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubWebHookDomainRepositoryImpl.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubWebHookDomainRepositoryImpl.java similarity index 81% rename from gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubWebHookDomainRepositoryImpl.java rename to gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubWebHookDomainRepositoryImpl.java index 1d62d1f5..a6d09123 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubWebHookDomainRepositoryImpl.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubWebHookDomainRepositoryImpl.java @@ -1,10 +1,10 @@ -package com.devoops.jpa.repository.github; +package com.devoops.jpa.repository.github.webhook; -import com.devoops.domain.entity.github.GithubWebhook; -import com.devoops.domain.repository.github.GithubWebhookDomainRepository; +import com.devoops.domain.entity.github.webhook.GithubWebhook; +import com.devoops.domain.repository.github.webhook.GithubWebhookDomainRepository; import com.devoops.exception.custom.GssException; import com.devoops.exception.errorcode.ErrorCode; -import com.devoops.jpa.entity.github.GithubWebhookEntity; +import com.devoops.jpa.entity.github.webhook.GithubWebhookEntity; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubWebHookJpaRepository.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubWebHookJpaRepository.java similarity index 69% rename from gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubWebHookJpaRepository.java rename to gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubWebHookJpaRepository.java index c09c53d8..5a4b6231 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/GithubWebHookJpaRepository.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubWebHookJpaRepository.java @@ -1,6 +1,6 @@ -package com.devoops.jpa.repository.github; +package com.devoops.jpa.repository.github.webhook; -import com.devoops.jpa.entity.github.GithubWebhookEntity; +import com.devoops.jpa.entity.github.webhook.GithubWebhookEntity; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/user/UserDomainRepositoryImpl.java b/gss-domain/src/main/java/com/devoops/jpa/repository/user/UserDomainRepositoryImpl.java index a3a58626..48775fe9 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/user/UserDomainRepositoryImpl.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/user/UserDomainRepositoryImpl.java @@ -1,14 +1,14 @@ package com.devoops.jpa.repository.user; -import com.devoops.domain.entity.github.GithubToken; +import com.devoops.domain.entity.github.token.GithubToken; import com.devoops.domain.entity.user.User; import com.devoops.domain.repository.user.UserDomainRepository; import com.devoops.exception.custom.GssException; import com.devoops.exception.errorcode.ErrorCode; -import com.devoops.jpa.entity.github.GithubTokenEntity; +import com.devoops.jpa.entity.github.token.GithubTokenEntity; import com.devoops.jpa.entity.user.UserEntity; -import com.devoops.jpa.repository.github.GithubTokenJpaRepository; +import com.devoops.jpa.repository.github.token.GithubTokenJpaRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; diff --git a/gss-domain/src/main/java/com/devoops/service/answer/AnswerService.java b/gss-domain/src/main/java/com/devoops/service/answer/AnswerService.java index 8f059f62..010ff100 100644 --- a/gss-domain/src/main/java/com/devoops/service/answer/AnswerService.java +++ b/gss-domain/src/main/java/com/devoops/service/answer/AnswerService.java @@ -1,7 +1,7 @@ package com.devoops.service.answer; -import com.devoops.domain.entity.github.Answer; -import com.devoops.domain.repository.github.AnswerDomainRepository; +import com.devoops.domain.entity.github.answer.Answer; +import com.devoops.domain.repository.github.answer.AnswerDomainRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; diff --git a/gss-domain/src/main/java/com/devoops/service/answerranking/AnswerRankingService.java b/gss-domain/src/main/java/com/devoops/service/answerranking/AnswerRankingService.java index efc02642..1b1b2b73 100644 --- a/gss-domain/src/main/java/com/devoops/service/answerranking/AnswerRankingService.java +++ b/gss-domain/src/main/java/com/devoops/service/answerranking/AnswerRankingService.java @@ -1,11 +1,11 @@ package com.devoops.service.answerranking; -import com.devoops.domain.entity.github.Answer; -import com.devoops.domain.entity.github.AnswerRanking; -import com.devoops.domain.entity.github.AnswerRankings; -import com.devoops.domain.entity.github.Question; -import com.devoops.domain.repository.github.AnswerRankingDomainRepository; -import com.devoops.domain.repository.github.QuestionDomainRepository; +import com.devoops.domain.entity.github.answer.Answer; +import com.devoops.domain.entity.github.answer.AnswerRanking; +import com.devoops.domain.entity.github.answer.AnswerRankings; +import com.devoops.domain.entity.github.question.Question; +import com.devoops.domain.repository.github.answer.AnswerRankingDomainRepository; +import com.devoops.domain.repository.github.question.QuestionDomainRepository; import java.util.Optional; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; diff --git a/gss-domain/src/main/java/com/devoops/service/pullrequest/PullRequestService.java b/gss-domain/src/main/java/com/devoops/service/pullrequest/PullRequestService.java index 4249a180..0a1e4c1b 100644 --- a/gss-domain/src/main/java/com/devoops/service/pullrequest/PullRequestService.java +++ b/gss-domain/src/main/java/com/devoops/service/pullrequest/PullRequestService.java @@ -1,10 +1,10 @@ package com.devoops.service.pullrequest; import com.devoops.command.request.PullRequestCreateCommand; -import com.devoops.domain.entity.github.PullRequest; -import com.devoops.domain.entity.github.PullRequests; -import com.devoops.domain.entity.github.RecordStatus; -import com.devoops.domain.repository.github.PullRequestDomainRepository; +import com.devoops.domain.entity.github.pr.PullRequest; +import com.devoops.domain.entity.github.pr.PullRequests; +import com.devoops.domain.entity.github.pr.RecordStatus; +import com.devoops.domain.repository.github.pr.PullRequestDomainRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; diff --git a/gss-domain/src/main/java/com/devoops/service/question/QuestionService.java b/gss-domain/src/main/java/com/devoops/service/question/QuestionService.java index 0b20203d..110166b5 100644 --- a/gss-domain/src/main/java/com/devoops/service/question/QuestionService.java +++ b/gss-domain/src/main/java/com/devoops/service/question/QuestionService.java @@ -1,16 +1,15 @@ package com.devoops.service.question; import com.devoops.command.request.AnswerUpdateCommand; -import com.devoops.domain.entity.github.Answer; -import com.devoops.domain.entity.github.Answers; -import com.devoops.domain.entity.github.Question; +import com.devoops.domain.entity.github.answer.Answer; +import com.devoops.domain.entity.github.answer.Answers; +import com.devoops.domain.entity.github.question.Question; import com.devoops.domain.entity.github.QuestionAnswer; import com.devoops.domain.entity.user.User; -import com.devoops.domain.repository.github.AnswerDomainRepository; -import com.devoops.domain.repository.github.QuestionDomainRepository; +import com.devoops.domain.repository.github.answer.AnswerDomainRepository; +import com.devoops.domain.repository.github.question.QuestionDomainRepository; import java.util.ArrayList; import java.util.List; -import java.util.Optional; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; diff --git a/gss-domain/src/main/java/com/devoops/service/repository/RepositoryService.java b/gss-domain/src/main/java/com/devoops/service/repository/RepositoryService.java index d9882428..4755b2ad 100644 --- a/gss-domain/src/main/java/com/devoops/service/repository/RepositoryService.java +++ b/gss-domain/src/main/java/com/devoops/service/repository/RepositoryService.java @@ -1,11 +1,11 @@ package com.devoops.service.repository; import com.devoops.command.request.RepositoryCreateCommand; -import com.devoops.domain.entity.github.GithubRepository; -import com.devoops.domain.entity.github.PullRequests; +import com.devoops.domain.entity.github.repo.GithubRepository; +import com.devoops.domain.entity.github.pr.PullRequests; import com.devoops.domain.entity.user.User; -import com.devoops.domain.repository.github.GithubRepoDomainRepository; -import com.devoops.domain.repository.github.PullRequestDomainRepository; +import com.devoops.domain.repository.github.repo.GithubRepoDomainRepository; +import com.devoops.domain.repository.github.pr.PullRequestDomainRepository; import com.devoops.exception.custom.GssException; import com.devoops.exception.errorcode.ErrorCode; import java.util.List; diff --git a/gss-domain/src/testFixtures/java/com/devoops/BaseRepositoryTest.java b/gss-domain/src/testFixtures/java/com/devoops/BaseRepositoryTest.java index 31e46045..8dfa388d 100644 --- a/gss-domain/src/testFixtures/java/com/devoops/BaseRepositoryTest.java +++ b/gss-domain/src/testFixtures/java/com/devoops/BaseRepositoryTest.java @@ -1,7 +1,7 @@ package com.devoops; -import com.devoops.jpa.repository.github.GithubRepoJpaRepository; -import com.devoops.jpa.repository.github.PullRequestJpaRepository; +import com.devoops.jpa.repository.github.repo.GithubRepoJpaRepository; +import com.devoops.jpa.repository.github.pr.PullRequestJpaRepository; import com.devoops.jpa.repository.user.UserJpaRepository; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.springframework.context.annotation.Import; diff --git a/gss-domain/src/testFixtures/java/com/devoops/generator/AnswerGenerator.java b/gss-domain/src/testFixtures/java/com/devoops/generator/AnswerGenerator.java index aef91870..0bd6c43b 100644 --- a/gss-domain/src/testFixtures/java/com/devoops/generator/AnswerGenerator.java +++ b/gss-domain/src/testFixtures/java/com/devoops/generator/AnswerGenerator.java @@ -1,8 +1,8 @@ package com.devoops.generator; -import com.devoops.domain.entity.github.Answer; -import com.devoops.domain.entity.github.Question; -import com.devoops.domain.repository.github.AnswerDomainRepository; +import com.devoops.domain.entity.github.answer.Answer; +import com.devoops.domain.entity.github.question.Question; +import com.devoops.domain.repository.github.answer.AnswerDomainRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/gss-domain/src/testFixtures/java/com/devoops/generator/AnswerRankingGenerator.java b/gss-domain/src/testFixtures/java/com/devoops/generator/AnswerRankingGenerator.java index 6150bd90..595cf4d9 100644 --- a/gss-domain/src/testFixtures/java/com/devoops/generator/AnswerRankingGenerator.java +++ b/gss-domain/src/testFixtures/java/com/devoops/generator/AnswerRankingGenerator.java @@ -1,11 +1,11 @@ package com.devoops.generator; -import com.devoops.domain.entity.github.Answer; -import com.devoops.domain.entity.github.AnswerRanking; -import com.devoops.domain.entity.github.PullRequest; -import com.devoops.domain.entity.github.Question; -import com.devoops.jpa.entity.github.AnswerRankingEntity; -import com.devoops.jpa.repository.github.AnswerRankingJpaRepository; +import com.devoops.domain.entity.github.answer.Answer; +import com.devoops.domain.entity.github.answer.AnswerRanking; +import com.devoops.domain.entity.github.pr.PullRequest; +import com.devoops.domain.entity.github.question.Question; +import com.devoops.jpa.entity.github.answer.AnswerRankingEntity; +import com.devoops.jpa.repository.github.answer.AnswerRankingJpaRepository; import java.time.LocalDateTime; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/gss-domain/src/testFixtures/java/com/devoops/generator/GithubRepoGenerator.java b/gss-domain/src/testFixtures/java/com/devoops/generator/GithubRepoGenerator.java index 41b8a16f..eb2fcc0e 100644 --- a/gss-domain/src/testFixtures/java/com/devoops/generator/GithubRepoGenerator.java +++ b/gss-domain/src/testFixtures/java/com/devoops/generator/GithubRepoGenerator.java @@ -1,8 +1,8 @@ package com.devoops.generator; -import com.devoops.domain.entity.github.GithubRepository; +import com.devoops.domain.entity.github.repo.GithubRepository; import com.devoops.domain.entity.user.User; -import com.devoops.domain.repository.github.GithubRepoDomainRepository; +import com.devoops.domain.repository.github.repo.GithubRepoDomainRepository; import java.util.concurrent.ThreadLocalRandom; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/gss-domain/src/testFixtures/java/com/devoops/generator/PullRequestGenerator.java b/gss-domain/src/testFixtures/java/com/devoops/generator/PullRequestGenerator.java index add1fc4f..718f0050 100644 --- a/gss-domain/src/testFixtures/java/com/devoops/generator/PullRequestGenerator.java +++ b/gss-domain/src/testFixtures/java/com/devoops/generator/PullRequestGenerator.java @@ -1,9 +1,9 @@ package com.devoops.generator; -import com.devoops.domain.entity.github.GithubRepository; -import com.devoops.domain.entity.github.PullRequest; -import com.devoops.domain.entity.github.RecordStatus; -import com.devoops.domain.repository.github.PullRequestDomainRepository; +import com.devoops.domain.entity.github.repo.GithubRepository; +import com.devoops.domain.entity.github.pr.PullRequest; +import com.devoops.domain.entity.github.pr.RecordStatus; +import com.devoops.domain.repository.github.pr.PullRequestDomainRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/gss-domain/src/testFixtures/java/com/devoops/generator/QuestionGenerator.java b/gss-domain/src/testFixtures/java/com/devoops/generator/QuestionGenerator.java index b136e78c..a1f10157 100644 --- a/gss-domain/src/testFixtures/java/com/devoops/generator/QuestionGenerator.java +++ b/gss-domain/src/testFixtures/java/com/devoops/generator/QuestionGenerator.java @@ -1,8 +1,8 @@ package com.devoops.generator; -import com.devoops.domain.entity.github.PullRequest; -import com.devoops.domain.entity.github.Question; -import com.devoops.domain.repository.github.QuestionDomainRepository; +import com.devoops.domain.entity.github.pr.PullRequest; +import com.devoops.domain.entity.github.question.Question; +import com.devoops.domain.repository.github.question.QuestionDomainRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/gss-domain/src/testFixtures/java/com/devoops/generator/UserGenerator.java b/gss-domain/src/testFixtures/java/com/devoops/generator/UserGenerator.java index 0f974782..816e74b4 100644 --- a/gss-domain/src/testFixtures/java/com/devoops/generator/UserGenerator.java +++ b/gss-domain/src/testFixtures/java/com/devoops/generator/UserGenerator.java @@ -1,6 +1,6 @@ package com.devoops.generator; -import com.devoops.domain.entity.github.GithubToken; +import com.devoops.domain.entity.github.token.GithubToken; import com.devoops.domain.entity.user.User; import com.devoops.domain.repository.user.UserDomainRepository; import java.util.concurrent.ThreadLocalRandom; diff --git a/gss-domain/src/testFixtures/java/com/devoops/generator/WebhookGenerator.java b/gss-domain/src/testFixtures/java/com/devoops/generator/WebhookGenerator.java index 0fe239b4..0445ba3f 100644 --- a/gss-domain/src/testFixtures/java/com/devoops/generator/WebhookGenerator.java +++ b/gss-domain/src/testFixtures/java/com/devoops/generator/WebhookGenerator.java @@ -1,9 +1,9 @@ package com.devoops.generator; -import com.devoops.domain.entity.github.GithubRepository; -import com.devoops.domain.entity.github.GithubWebhook; +import com.devoops.domain.entity.github.repo.GithubRepository; +import com.devoops.domain.entity.github.webhook.GithubWebhook; import com.devoops.domain.entity.user.User; -import com.devoops.domain.repository.github.GithubWebhookDomainRepository; +import com.devoops.domain.repository.github.webhook.GithubWebhookDomainRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/gss-mcp-app/src/main/java/com/devoops/event/QuestionCreateEvent.java b/gss-mcp-app/src/main/java/com/devoops/event/QuestionCreateEvent.java index f5de0764..b64c92f1 100644 --- a/gss-mcp-app/src/main/java/com/devoops/event/QuestionCreateEvent.java +++ b/gss-mcp-app/src/main/java/com/devoops/event/QuestionCreateEvent.java @@ -1,7 +1,7 @@ package com.devoops.event; -import com.devoops.domain.entity.github.GithubToken; -import com.devoops.domain.entity.github.PullRequest; +import com.devoops.domain.entity.github.token.GithubToken; +import com.devoops.domain.entity.github.pr.PullRequest; import com.devoops.dto.AppWebhookEventRequest; import lombok.Getter; import org.springframework.context.ApplicationEvent; diff --git a/gss-mcp-app/src/main/java/com/devoops/event/QuestionEventListener.java b/gss-mcp-app/src/main/java/com/devoops/event/QuestionEventListener.java index 028bfc7d..595375db 100644 --- a/gss-mcp-app/src/main/java/com/devoops/event/QuestionEventListener.java +++ b/gss-mcp-app/src/main/java/com/devoops/event/QuestionEventListener.java @@ -3,9 +3,9 @@ import com.devoops.adaptor.GithubAdaptor; import com.devoops.adaptor.PrAnalysisAdapter; import com.devoops.command.request.QuestionCreateCommand; -import com.devoops.domain.entity.github.GithubToken; -import com.devoops.domain.entity.github.PullRequest; -import com.devoops.domain.entity.github.Question; +import com.devoops.domain.entity.github.token.GithubToken; +import com.devoops.domain.entity.github.pr.PullRequest; +import com.devoops.domain.entity.github.question.Question; import com.devoops.dto.AppWebhookEventRequest; import com.devoops.dto.request.AdaptedAnalyzePrResponse; import com.devoops.dto.response.AnalyzePrResponse; diff --git a/gss-mcp-app/src/main/java/com/devoops/service/webhook/WebhookFacadeService.java b/gss-mcp-app/src/main/java/com/devoops/service/webhook/WebhookFacadeService.java index 43d21de5..12401378 100644 --- a/gss-mcp-app/src/main/java/com/devoops/service/webhook/WebhookFacadeService.java +++ b/gss-mcp-app/src/main/java/com/devoops/service/webhook/WebhookFacadeService.java @@ -1,11 +1,11 @@ package com.devoops.service.webhook; import com.devoops.command.request.PullRequestCreateCommand; -import com.devoops.domain.entity.github.GithubRepository; -import com.devoops.domain.entity.github.GithubToken; -import com.devoops.domain.entity.github.PullRequest; +import com.devoops.domain.entity.github.repo.GithubRepository; +import com.devoops.domain.entity.github.token.GithubToken; +import com.devoops.domain.entity.github.pr.PullRequest; import com.devoops.domain.entity.user.User; -import com.devoops.domain.repository.github.GithubRepoDomainRepository; +import com.devoops.domain.repository.github.repo.GithubRepoDomainRepository; import com.devoops.dto.AppWebhookEventRequest; import com.devoops.event.QuestionCreateEvent; import com.devoops.service.pullrequest.PullRequestService; diff --git a/gss-mcp-app/src/test/java/com/devoops/service/webhook/WebhookFacadeServiceTest.java b/gss-mcp-app/src/test/java/com/devoops/service/webhook/WebhookFacadeServiceTest.java index 8fea513b..d7575352 100644 --- a/gss-mcp-app/src/test/java/com/devoops/service/webhook/WebhookFacadeServiceTest.java +++ b/gss-mcp-app/src/test/java/com/devoops/service/webhook/WebhookFacadeServiceTest.java @@ -4,12 +4,12 @@ import com.devoops.BaseMcpTest; import com.devoops.adaptor.GithubAdaptor; -import com.devoops.domain.entity.github.GithubRepository; -import com.devoops.domain.entity.github.PullRequests; +import com.devoops.domain.entity.github.repo.GithubRepository; +import com.devoops.domain.entity.github.pr.PullRequests; import com.devoops.domain.entity.github.QuestionAnswer; import com.devoops.domain.entity.user.User; -import com.devoops.domain.repository.github.PullRequestDomainRepository; -import com.devoops.domain.repository.github.QuestionDomainRepository; +import com.devoops.domain.repository.github.pr.PullRequestDomainRepository; +import com.devoops.domain.repository.github.question.QuestionDomainRepository; import com.devoops.dto.AppWebhookEventRequest; import com.devoops.dto.request.GitHubWebhookEventRequest; import java.time.LocalDateTime; From 73e91264a6315a2aab2579c7fcfb1f72ea0925f5 Mon Sep 17 00:00:00 2001 From: coli Date: Tue, 12 Aug 2025 00:03:33 +0900 Subject: [PATCH 04/22] =?UTF-8?q?refactor:=20=EC=8B=AC=EB=8A=94=20?= =?UTF-8?q?=EC=9B=B9=ED=9B=85=20=EC=95=84=EC=9D=B4=EB=94=94=EA=B0=80=20?= =?UTF-8?q?=EA=B5=AC=EB=B6=84=EB=90=98=EB=8F=84=EB=A1=9D=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../github/repo/GithubRepoDomainRepository.java | 2 ++ .../github/repo/GithubRepoDomainRepositoryImpl.java | 9 +++++++++ .../repository/github/repo/GithubRepoJpaRepository.java | 2 ++ .../devoops/service/pullrequest/PullRequestService.java | 4 ---- .../devoops/controller/webhook/WebhookController.java | 6 ++++-- .../devoops/dto/request/GitHubWebhookEventRequest.java | 2 +- .../devoops/service/webhook/WebhookFacadeService.java | 4 ++-- 7 files changed, 20 insertions(+), 9 deletions(-) diff --git a/gss-domain/src/main/java/com/devoops/domain/repository/github/repo/GithubRepoDomainRepository.java b/gss-domain/src/main/java/com/devoops/domain/repository/github/repo/GithubRepoDomainRepository.java index c1aca7b4..25a60eaf 100644 --- a/gss-domain/src/main/java/com/devoops/domain/repository/github/repo/GithubRepoDomainRepository.java +++ b/gss-domain/src/main/java/com/devoops/domain/repository/github/repo/GithubRepoDomainRepository.java @@ -20,5 +20,7 @@ public interface GithubRepoDomainRepository { GithubRepository findByExternalId(long externalId); + GithubRepository findByExternalIdAndUserId(long externalId, long userId); + void deleteById(long id); } diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoDomainRepositoryImpl.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoDomainRepositoryImpl.java index ee1f6d19..99339572 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoDomainRepositoryImpl.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoDomainRepositoryImpl.java @@ -73,6 +73,15 @@ public GithubRepository findByExternalId(long externalId) { } + @Override + @Transactional(readOnly = true) + public GithubRepository findByExternalIdAndUserId(long externalId, long userId) { + return repoJpaRepository.findByGithubRepositoryIdAndUserId(externalId, userId) + .orElseThrow(() -> new GssException(ErrorCode.GITHUB_REPOSITORY_NOT_FOUND)) + .toDomainEntity(); + + } + @Override @Transactional public void deleteById(long id) { diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoJpaRepository.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoJpaRepository.java index 61c8c78b..f7cc064b 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoJpaRepository.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoJpaRepository.java @@ -16,4 +16,6 @@ public interface GithubRepoJpaRepository extends JpaRepository findByGithubRepositoryId(long externalId); + + Optional findByGithubRepositoryIdAndUserId(long externalId, long userId); } diff --git a/gss-domain/src/main/java/com/devoops/service/pullrequest/PullRequestService.java b/gss-domain/src/main/java/com/devoops/service/pullrequest/PullRequestService.java index 0a1e4c1b..8fb4549d 100644 --- a/gss-domain/src/main/java/com/devoops/service/pullrequest/PullRequestService.java +++ b/gss-domain/src/main/java/com/devoops/service/pullrequest/PullRequestService.java @@ -34,9 +34,5 @@ public PullRequest findByQuestionId(long questionId) { public PullRequest getPullRequest(long pullRequestId) { return pullRequestRepository.findById(pullRequestId); } - - public PullRequests findByRepositoryId(long repositoryId) { - return pullRequestRepository.findByRepositoryId(repositoryId); - } } diff --git a/gss-mcp-app/src/main/java/com/devoops/controller/webhook/WebhookController.java b/gss-mcp-app/src/main/java/com/devoops/controller/webhook/WebhookController.java index 1064a711..2e2d9405 100644 --- a/gss-mcp-app/src/main/java/com/devoops/controller/webhook/WebhookController.java +++ b/gss-mcp-app/src/main/java/com/devoops/controller/webhook/WebhookController.java @@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -22,9 +23,10 @@ public class WebhookController { /** * webhook url : https://mcp.dev-oops.kr/api/webhooks/github/pull-requests */ - @PostMapping("/github/pull-requests") + @PostMapping("/github/pull-requests/{repositoryId}") public ResponseEntity getWebhookPullRequest( - @RequestBody GitHubWebhookEventRequest gitHubWebhookEventRequest + @RequestBody GitHubWebhookEventRequest gitHubWebhookEventRequest, + @PathVariable(name = "repositoryId") Long appRepositoryId ) { log.info("request : {} ", gitHubWebhookEventRequest); if(gitHubWebhookEventRequest.isMerged()) { diff --git a/gss-mcp-app/src/main/java/com/devoops/dto/request/GitHubWebhookEventRequest.java b/gss-mcp-app/src/main/java/com/devoops/dto/request/GitHubWebhookEventRequest.java index 29a6bef3..9ab5268d 100644 --- a/gss-mcp-app/src/main/java/com/devoops/dto/request/GitHubWebhookEventRequest.java +++ b/gss-mcp-app/src/main/java/com/devoops/dto/request/GitHubWebhookEventRequest.java @@ -89,7 +89,7 @@ public LocalDateTime getMergedAt() { return pullRequest.mergedAt; } - public Boolean isMerged() { + public boolean isMerged() { if ("closed".equals(action) && pullRequest != null && pullRequest.merged != null diff --git a/gss-mcp-app/src/main/java/com/devoops/service/webhook/WebhookFacadeService.java b/gss-mcp-app/src/main/java/com/devoops/service/webhook/WebhookFacadeService.java index 12401378..bd8fabca 100644 --- a/gss-mcp-app/src/main/java/com/devoops/service/webhook/WebhookFacadeService.java +++ b/gss-mcp-app/src/main/java/com/devoops/service/webhook/WebhookFacadeService.java @@ -34,7 +34,6 @@ public void createQuestionWithWebhookEvent(AppWebhookEventRequest request) { User triggerUser = userService.findByProviderId(request.userId()); GithubToken githubToken = triggerUser.getGithubToken(); - // 레포 아이디를 기반으로 찾기 -> 풀리퀘 생성 -> prCount 올리기 PullRequest readyPullRequest = savePullRequest( triggerUser.getId(), request @@ -47,7 +46,8 @@ private PullRequest savePullRequest( long userId, AppWebhookEventRequest request ) { - GithubRepository githubRepository = githubRepoDomainRepository.findByExternalId(request.repositoryId()); + // 레포 아이디를 기반으로 찾기 -> 풀리퀘 생성 -> prCount 올리기 + GithubRepository githubRepository = githubRepoDomainRepository.findByExternalIdAndUserId(request.repositoryId(), userId); PullRequestCreateCommand prCreateCommand = resolvePRCreateCommand(request, githubRepository.getId(), userId); return pullRequestService.save(prCreateCommand); } From ac7999a182ff029eb5dac344246f43fdad70d09d Mon Sep 17 00:00:00 2001 From: coli Date: Tue, 12 Aug 2025 00:23:23 +0900 Subject: [PATCH 05/22] =?UTF-8?q?refactor:=20=EB=8B=A8=EC=9D=BC=20url?= =?UTF-8?q?=EB=A1=9C=20=EC=9B=B9=ED=9B=85=20=EA=B4=80=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/devoops/service/GitHubService.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/gss-api-app/src/main/java/com/devoops/service/GitHubService.java b/gss-api-app/src/main/java/com/devoops/service/GitHubService.java index 668fab54..050f2bc9 100644 --- a/gss-api-app/src/main/java/com/devoops/service/GitHubService.java +++ b/gss-api-app/src/main/java/com/devoops/service/GitHubService.java @@ -47,12 +47,11 @@ public void registerWebhook(User user, long repositoryId) { } private void createWebhook(GithubToken token, GithubRepository repo) { - String webhookUrl = mcpWebhookUrl + "/" + repo.getId(); WebHookCreateResponse webHookCreateResponse = gitHubClient.createWebhook( BEARER_PREFIX + token.getToken(), repo.getOwner(), repo.getName(), - GitHubWebhookRequest.ofPullRequestEvent(webhookUrl) + GitHubWebhookRequest.ofPullRequestEvent(mcpWebhookUrl) ); GithubWebhook webhook = new GithubWebhook(webHookCreateResponse.id(), repo.getId()); githubWebhookDomainRepository.save(webhook); From a3c06860f6c65b90311865385765b099a7b7fe14 Mon Sep 17 00:00:00 2001 From: coli Date: Tue, 12 Aug 2025 00:28:52 +0900 Subject: [PATCH 06/22] =?UTF-8?q?refactor:=20=ED=8A=B8=EB=9E=98=ED=82=B9?= =?UTF-8?q?=20=EC=A4=91=EC=9D=BC=20=EB=95=8C=EB=A7=8C=20pr=20=EB=B0=8F=20?= =?UTF-8?q?=EC=A7=88=EB=AC=B8=EC=9D=84=20=EC=83=9D=EC=84=B1=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/webhook/WebhookFacadeService.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/gss-mcp-app/src/main/java/com/devoops/service/webhook/WebhookFacadeService.java b/gss-mcp-app/src/main/java/com/devoops/service/webhook/WebhookFacadeService.java index bd8fabca..fe1dbe5e 100644 --- a/gss-mcp-app/src/main/java/com/devoops/service/webhook/WebhookFacadeService.java +++ b/gss-mcp-app/src/main/java/com/devoops/service/webhook/WebhookFacadeService.java @@ -10,6 +10,7 @@ import com.devoops.event.QuestionCreateEvent; import com.devoops.service.pullrequest.PullRequestService; import com.devoops.service.user.UserService; +import java.util.Optional; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.context.ApplicationEventPublisher; @@ -33,13 +34,16 @@ public void createQuestionWithWebhookEvent(AppWebhookEventRequest request) { log.info("request : {}", request); User triggerUser = userService.findByProviderId(request.userId()); - GithubToken githubToken = triggerUser.getGithubToken(); - PullRequest readyPullRequest = savePullRequest( - triggerUser.getId(), - request - ); + GithubRepository githubRepository = githubRepoDomainRepository.findByExternalIdAndUserId(request.repositoryId(), triggerUser.getId()); - eventPublisher.publishEvent(new QuestionCreateEvent(this, request, readyPullRequest, githubToken)); + if(githubRepository.isTracking()) { + PullRequest readyPullRequest = savePullRequest( + triggerUser.getId(), + request + ); + QuestionCreateEvent questionCreateEvent = new QuestionCreateEvent(this, request, readyPullRequest, triggerUser.getGithubToken()); + eventPublisher.publishEvent(questionCreateEvent); + } } private PullRequest savePullRequest( From 21922b7376ed3603547be55ba9a92aee914af675 Mon Sep 17 00:00:00 2001 From: coli Date: Tue, 12 Aug 2025 00:37:54 +0900 Subject: [PATCH 07/22] =?UTF-8?q?feat:=20=EB=93=B1=EB=A1=9D=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=EB=A5=BC=20=EA=B4=80=EB=A6=AC=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../github/repo/GithubRepoRegistryCount.java | 12 +++++++++ .../GithubRepoRegistryCountRepository.java | 5 ++++ .../repo/GithubRepoRegistryCountEntity.java | 27 +++++++++++++++++++ .../GithubRepoRegistryCountJpaRepository.java | 9 +++++++ ...GithubRepoRegistryCountRepositoryImpl.java | 7 +++++ 5 files changed, 60 insertions(+) create mode 100644 gss-domain/src/main/java/com/devoops/domain/entity/github/repo/GithubRepoRegistryCount.java create mode 100644 gss-domain/src/main/java/com/devoops/domain/repository/github/repo/GithubRepoRegistryCountRepository.java create mode 100644 gss-domain/src/main/java/com/devoops/jpa/entity/github/repo/GithubRepoRegistryCountEntity.java create mode 100644 gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountJpaRepository.java create mode 100644 gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountRepositoryImpl.java diff --git a/gss-domain/src/main/java/com/devoops/domain/entity/github/repo/GithubRepoRegistryCount.java b/gss-domain/src/main/java/com/devoops/domain/entity/github/repo/GithubRepoRegistryCount.java new file mode 100644 index 00000000..86e61433 --- /dev/null +++ b/gss-domain/src/main/java/com/devoops/domain/entity/github/repo/GithubRepoRegistryCount.java @@ -0,0 +1,12 @@ +package com.devoops.domain.entity.github.repo; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@Getter +@RequiredArgsConstructor +public class GithubRepoRegistryCount { + + private final long externalId; + private final long reposCount; +} diff --git a/gss-domain/src/main/java/com/devoops/domain/repository/github/repo/GithubRepoRegistryCountRepository.java b/gss-domain/src/main/java/com/devoops/domain/repository/github/repo/GithubRepoRegistryCountRepository.java new file mode 100644 index 00000000..d5e904e6 --- /dev/null +++ b/gss-domain/src/main/java/com/devoops/domain/repository/github/repo/GithubRepoRegistryCountRepository.java @@ -0,0 +1,5 @@ +package com.devoops.domain.repository.github.repo; + +public interface GithubRepoRegistryCountRepository { + +} diff --git a/gss-domain/src/main/java/com/devoops/jpa/entity/github/repo/GithubRepoRegistryCountEntity.java b/gss-domain/src/main/java/com/devoops/jpa/entity/github/repo/GithubRepoRegistryCountEntity.java new file mode 100644 index 00000000..837c533b --- /dev/null +++ b/gss-domain/src/main/java/com/devoops/jpa/entity/github/repo/GithubRepoRegistryCountEntity.java @@ -0,0 +1,27 @@ +package com.devoops.jpa.entity.github.repo; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Table(name = "github_repo_registry_count") +@Entity +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class GithubRepoRegistryCountEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private long externalId; + + private long registryCount; +} diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountJpaRepository.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountJpaRepository.java new file mode 100644 index 00000000..fbe31cbf --- /dev/null +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountJpaRepository.java @@ -0,0 +1,9 @@ +package com.devoops.jpa.repository.github.repo; + +import com.devoops.domain.entity.github.repo.GithubRepoRegistryCount; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; + +public interface GithubRepoRegistryCountJpaRepository extends JpaRepository { + +} diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountRepositoryImpl.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountRepositoryImpl.java new file mode 100644 index 00000000..a1f94944 --- /dev/null +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountRepositoryImpl.java @@ -0,0 +1,7 @@ +package com.devoops.jpa.repository.github.repo; + +import com.devoops.domain.repository.github.repo.GithubRepoRegistryCountRepository; + +public class GithubRepoRegistryCountRepositoryImpl implements GithubRepoRegistryCountRepository { + +} From cba5cec917ead9af03f00bed3f096e54953b37b2 Mon Sep 17 00:00:00 2001 From: coli Date: Tue, 12 Aug 2025 00:55:17 +0900 Subject: [PATCH 08/22] =?UTF-8?q?chore:=20=EB=A1=9C=EC=BB=AC=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=ED=99=98=EA=B2=BD=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-db.yml | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/gss-domain/src/main/resources/application-db.yml b/gss-domain/src/main/resources/application-db.yml index 416bab1c..2d8d2fa6 100644 --- a/gss-domain/src/main/resources/application-db.yml +++ b/gss-domain/src/main/resources/application-db.yml @@ -3,33 +3,33 @@ spring: config: activate: on-profile: local - datasource: - url: jdbc:mysql://localhost:3306/gss?useSSL=false&allowPublicKeyRetrieval=true - username: root - password: - jpa: - hibernate: - ddl-auto: create-drop - properties: - hibernate: - dialect: org.hibernate.dialect.MySQL8Dialect # datasource: -# driver-class-name: org.h2.Driver -# url: jdbc:h2:mem:database -# username: sa +# url: jdbc:mysql://localhost:3306/gss?useSSL=false&allowPublicKeyRetrieval=true +# username: root # password: -# h2: -# console: -# enabled: true -# path: /h2-console # jpa: -# show-sql: true -# properties: -# hibernate: -# format_sql: true # hibernate: # ddl-auto: create-drop -# defer-datasource-initialization: false +# properties: +# hibernate: +# dialect: org.hibernate.dialect.MySQL8Dialect + datasource: + driver-class-name: org.h2.Driver + url: jdbc:h2:mem:database + username: sa + password: + h2: + console: + enabled: true + path: /h2-console + jpa: + show-sql: true + properties: + hibernate: + format_sql: true + hibernate: + ddl-auto: create-drop + defer-datasource-initialization: false --- spring: From 360f85341817752c17a6893f75fb9569c8af5528 Mon Sep 17 00:00:00 2001 From: coli Date: Tue, 12 Aug 2025 00:55:28 +0900 Subject: [PATCH 09/22] =?UTF-8?q?chore:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EC=BB=A8=ED=8A=B8=EB=A1=A4=EB=9F=AC=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../devoops/controller/GithubController.java | 26 ------------------- 1 file changed, 26 deletions(-) delete mode 100644 gss-api-app/src/main/java/com/devoops/controller/GithubController.java diff --git a/gss-api-app/src/main/java/com/devoops/controller/GithubController.java b/gss-api-app/src/main/java/com/devoops/controller/GithubController.java deleted file mode 100644 index 5f33ed6f..00000000 --- a/gss-api-app/src/main/java/com/devoops/controller/GithubController.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.devoops.controller; - -import com.devoops.controller.auth.AuthUser; -import com.devoops.domain.entity.user.User; -import com.devoops.service.GitHubService; -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -@RestController -@RequiredArgsConstructor -@RequestMapping("/api/v1/github") -public class GithubController { - - private final GitHubService gitHubService; - - @PostMapping("/repositories/{repositoryId}/webhooks") - public void registerWebhook( - @AuthUser User user, - @PathVariable long repositoryId - ) { - gitHubService.registerWebhook(user, repositoryId); - } -} From 9d6bbae45333e219cae52b684d59828a4b6433d4 Mon Sep 17 00:00:00 2001 From: coli Date: Tue, 12 Aug 2025 00:55:45 +0900 Subject: [PATCH 10/22] =?UTF-8?q?chore:=20registrycount=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20=EA=B4=80=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../github/repo/GithubRepoRegistryCountJpaRepository.java | 5 ++--- .../github/repo/GithubRepoRegistryCountRepositoryImpl.java | 2 ++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountJpaRepository.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountJpaRepository.java index fbe31cbf..6af7f0f3 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountJpaRepository.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountJpaRepository.java @@ -1,9 +1,8 @@ package com.devoops.jpa.repository.github.repo; -import com.devoops.domain.entity.github.repo.GithubRepoRegistryCount; +import com.devoops.jpa.entity.github.repo.GithubRepoRegistryCountEntity; import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Modifying; -public interface GithubRepoRegistryCountJpaRepository extends JpaRepository { +public interface GithubRepoRegistryCountJpaRepository extends JpaRepository { } diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountRepositoryImpl.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountRepositoryImpl.java index a1f94944..ebb001fa 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountRepositoryImpl.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountRepositoryImpl.java @@ -1,7 +1,9 @@ package com.devoops.jpa.repository.github.repo; import com.devoops.domain.repository.github.repo.GithubRepoRegistryCountRepository; +import org.springframework.stereotype.Repository; +@Repository public class GithubRepoRegistryCountRepositoryImpl implements GithubRepoRegistryCountRepository { } From 8cfa396023827192e0c105cfcb7701fe824d89ad Mon Sep 17 00:00:00 2001 From: coli Date: Tue, 12 Aug 2025 01:25:31 +0900 Subject: [PATCH 11/22] =?UTF-8?q?chore:=20=EC=9B=B9=ED=9B=85=20=ED=95=98?= =?UTF-8?q?=EB=82=98=EB=A1=9C=20=EB=8F=99=EC=9D=BC=20=EB=A0=88=ED=8F=AC?= =?UTF-8?q?=EB=A5=BC=20=EA=B4=80=EB=A6=AC=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/devoops/service/GitHubService.java | 56 ------------ .../facade/RepositoryFacadeService.java | 7 +- .../service/github/WebHookService.java | 91 +++++++++++++++++++ .../devoops/service/GitHubServiceTest.java | 8 +- .../github/repo/GithubRepoRegistryCount.java | 9 ++ .../GithubRepoRegistryCountRepository.java | 11 +++ .../repo/GithubRepoRegistryCountEntity.java | 13 +++ .../GithubRepoRegistryCountJpaRepository.java | 6 ++ ...GithubRepoRegistryCountRepositoryImpl.java | 48 ++++++++++ 9 files changed, 187 insertions(+), 62 deletions(-) create mode 100644 gss-api-app/src/main/java/com/devoops/service/github/WebHookService.java diff --git a/gss-api-app/src/main/java/com/devoops/service/GitHubService.java b/gss-api-app/src/main/java/com/devoops/service/GitHubService.java index 050f2bc9..a792ce15 100644 --- a/gss-api-app/src/main/java/com/devoops/service/GitHubService.java +++ b/gss-api-app/src/main/java/com/devoops/service/GitHubService.java @@ -1,25 +1,15 @@ package com.devoops.service; import com.devoops.client.GitHubClient; -import com.devoops.domain.entity.github.repo.GithubRepository; import com.devoops.domain.entity.github.token.GithubToken; -import com.devoops.domain.entity.github.webhook.GithubWebhook; import com.devoops.domain.entity.user.User; -import com.devoops.domain.repository.github.repo.GithubRepoDomainRepository; -import com.devoops.domain.repository.github.token.GithubTokenDomainRepository; -import com.devoops.domain.repository.github.webhook.GithubWebhookDomainRepository; -import com.devoops.dto.request.GitHubWebhookRequest; import com.devoops.dto.request.GithubRepoUrl; import com.devoops.dto.response.GithubPrResponse; import com.devoops.dto.response.GithubRepoInfoResponse; -import com.devoops.dto.response.WebHookCreateResponse; -import com.devoops.exception.GithubNotFoundException; import java.util.List; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; @Slf4j @Service @@ -31,31 +21,7 @@ public class GitHubService { private static final int MAX_PER_PAGE_PULL_REQUEST = 10; private static final String REQUEST_PULL_REQUEST_STATUS = "closed"; - @Value("${dev-oops.mcp.webhook-url}") - private String mcpWebhookUrl; - private final GitHubClient gitHubClient; - private final GithubRepoDomainRepository githubRepoDomainRepository; - private final GithubTokenDomainRepository githubTokenDomainRepository; - private final GithubWebhookDomainRepository githubWebhookDomainRepository; - - public void registerWebhook(User user, long repositoryId) { - - GithubRepository githubRepository = githubRepoDomainRepository.findByIdAndUserId(repositoryId, user.getId()); - GithubToken githubToken = githubTokenDomainRepository.getByUserId(user.getId()); - createWebhook(githubToken, githubRepository); - } - - private void createWebhook(GithubToken token, GithubRepository repo) { - WebHookCreateResponse webHookCreateResponse = gitHubClient.createWebhook( - BEARER_PREFIX + token.getToken(), - repo.getOwner(), - repo.getName(), - GitHubWebhookRequest.ofPullRequestEvent(mcpWebhookUrl) - ); - GithubWebhook webhook = new GithubWebhook(webHookCreateResponse.id(), repo.getId()); - githubWebhookDomainRepository.save(webhook); - } public List getUserPullRequests( GithubRepoUrl repoUrl, @@ -83,26 +49,4 @@ public GithubRepoInfoResponse getRepositoryInfo(GithubRepoUrl repoUrl, GithubTok repoUrl.getRepoName() ); } - - @Transactional - public void deleteWebhook(User user, long repositoryId) { - GithubRepository repo = githubRepoDomainRepository.findByIdAndUserId(repositoryId, user.getId()); - GithubToken githubToken = githubTokenDomainRepository.getByUserId(user.getId()); - GithubWebhook webhook = githubWebhookDomainRepository.findByRepositoryId(repo.getId()); - tryDeleteWebhook(githubToken, webhook, repo); - githubWebhookDomainRepository.deleteById(webhook.getId()); - } - - private void tryDeleteWebhook(GithubToken githubToken, GithubWebhook webhook, GithubRepository repo) { - try { - gitHubClient.deleteWebhook( - BEARER_PREFIX + githubToken.getToken(), - repo.getOwner(), - repo.getName(), - webhook.getExternalId() - ); - } catch (GithubNotFoundException githubNotFoundException) { - log.error("깃허브 레포에서 웹훅을 찾을 수 없습니다 : {}, repo : {} ", githubNotFoundException, repo.getName()); - } - } } diff --git a/gss-api-app/src/main/java/com/devoops/service/facade/RepositoryFacadeService.java b/gss-api-app/src/main/java/com/devoops/service/facade/RepositoryFacadeService.java index 7c3976fd..5df57cf8 100644 --- a/gss-api-app/src/main/java/com/devoops/service/facade/RepositoryFacadeService.java +++ b/gss-api-app/src/main/java/com/devoops/service/facade/RepositoryFacadeService.java @@ -11,6 +11,7 @@ import com.devoops.dto.response.GithubRepoInfoResponse; import com.devoops.event.AnalyzeMyPrEvent; import com.devoops.service.GitHubService; +import com.devoops.service.github.WebHookService; import com.devoops.service.repository.RepositoryService; import java.util.List; import lombok.RequiredArgsConstructor; @@ -24,13 +25,14 @@ public class RepositoryFacadeService { private final RepositoryService repositoryService; private final GitHubService gitHubService; + private final WebHookService webHookService; private final ApplicationEventPublisher eventPublisher; @Transactional public GithubRepository save(RepositorySaveRequest request, User user) { GithubRepoUrl repoUrl = new GithubRepoUrl(request.url()); GithubRepository savedRepository = saveRepository(repoUrl, user); - gitHubService.registerWebhook(user, savedRepository.getId()); + webHookService.registerWebhook(user, savedRepository.getId()); eventPublisher.publishEvent(new AnalyzeMyPrEvent(repoUrl, user, this)); return savedRepository; } @@ -62,7 +64,8 @@ public List findMyRepositories(User user) { @Transactional public void deleteRepository(User user, long repositoryId) { - gitHubService.deleteWebhook(user, repositoryId); + //TODO 다른 유저로부터 등록된 상황 고려 repositoryService.stopTrackingRepository(user, repositoryId); + webHookService.deleteWebhook(user, repositoryId); } } diff --git a/gss-api-app/src/main/java/com/devoops/service/github/WebHookService.java b/gss-api-app/src/main/java/com/devoops/service/github/WebHookService.java new file mode 100644 index 00000000..d55233c0 --- /dev/null +++ b/gss-api-app/src/main/java/com/devoops/service/github/WebHookService.java @@ -0,0 +1,91 @@ +package com.devoops.service.github; + +import com.devoops.client.GitHubClient; +import com.devoops.domain.entity.github.repo.GithubRepoRegistryCount; +import com.devoops.domain.entity.github.repo.GithubRepository; +import com.devoops.domain.entity.github.token.GithubToken; +import com.devoops.domain.entity.github.webhook.GithubWebhook; +import com.devoops.domain.entity.user.User; +import com.devoops.domain.repository.github.repo.GithubRepoDomainRepository; +import com.devoops.domain.repository.github.repo.GithubRepoRegistryCountRepository; +import com.devoops.domain.repository.github.token.GithubTokenDomainRepository; +import com.devoops.domain.repository.github.webhook.GithubWebhookDomainRepository; +import com.devoops.dto.request.GitHubWebhookRequest; +import com.devoops.dto.response.WebHookCreateResponse; +import com.devoops.exception.GithubNotFoundException; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Slf4j +@Service +@RequiredArgsConstructor +public class WebHookService { + + private static final String BEARER_PREFIX = "Bearer "; + + @Value("${dev-oops.mcp.webhook-url}") + private String mcpWebhookUrl; + + private final GitHubClient gitHubClient; + private final GithubRepoDomainRepository githubRepoDomainRepository; + private final GithubTokenDomainRepository githubTokenDomainRepository; + private final GithubWebhookDomainRepository githubWebhookDomainRepository; + private final GithubRepoRegistryCountRepository registryCountRepository; + + public void registerWebhook(User user, long repositoryId) { + GithubRepository githubRepository = githubRepoDomainRepository.findByIdAndUserId(repositoryId, user.getId()); + long repoExternalId = githubRepository.getExternalId(); + GithubRepoRegistryCount registryCount = registryCountRepository.getByExternalId(repoExternalId); + + if(registryCount.isPositive()) { + registryCountRepository.plusCount(repoExternalId); + return; + } + GithubToken githubToken = githubTokenDomainRepository.getByUserId(user.getId()); + createWebhook(githubToken, githubRepository); + } + + private void createWebhook(GithubToken token, GithubRepository repo) { + WebHookCreateResponse webHookCreateResponse = gitHubClient.createWebhook( + BEARER_PREFIX + token.getToken(), + repo.getOwner(), + repo.getName(), + GitHubWebhookRequest.ofPullRequestEvent(mcpWebhookUrl) + ); + GithubWebhook webhook = new GithubWebhook(webHookCreateResponse.id(), repo.getId()); + githubWebhookDomainRepository.save(webhook); + } + + @Transactional + public void deleteWebhook(User user, long repositoryId) { + GithubRepository repo = githubRepoDomainRepository.findByIdAndUserId(repositoryId, user.getId()); + long repoExternalId = repo.getExternalId(); + GithubRepoRegistryCount registryCount = registryCountRepository.getByExternalId(repoExternalId); + + if(registryCount.greaterThan(1L)) { + registryCountRepository.minusCount(repoExternalId); + return; + } + GithubToken githubToken = githubTokenDomainRepository.getByUserId(user.getId()); + GithubWebhook webhook = githubWebhookDomainRepository.findByRepositoryId(repo.getId()); + tryDeleteWebhook(githubToken, webhook, repo); + githubWebhookDomainRepository.deleteById(webhook.getId()); + registryCountRepository.deleteByExternalId(repoExternalId); + } + + private void tryDeleteWebhook(GithubToken githubToken, GithubWebhook webhook, GithubRepository repo) { + try { + gitHubClient.deleteWebhook( + BEARER_PREFIX + githubToken.getToken(), + repo.getOwner(), + repo.getName(), + webhook.getExternalId() + ); + } catch (GithubNotFoundException githubNotFoundException) { + log.error("깃허브 레포에서 웹훅을 찾을 수 없습니다 : {}, repo : {} ", githubNotFoundException, repo.getName()); + } + } +} diff --git a/gss-api-app/src/test/java/com/devoops/service/GitHubServiceTest.java b/gss-api-app/src/test/java/com/devoops/service/GitHubServiceTest.java index d051c5af..503a73c4 100644 --- a/gss-api-app/src/test/java/com/devoops/service/GitHubServiceTest.java +++ b/gss-api-app/src/test/java/com/devoops/service/GitHubServiceTest.java @@ -5,11 +5,11 @@ import com.devoops.BaseServiceTest; import com.devoops.client.GitHubClient; import com.devoops.domain.entity.github.repo.GithubRepository; -import com.devoops.domain.entity.github.webhook.GithubWebhook; import com.devoops.domain.entity.user.User; import com.devoops.domain.repository.github.webhook.GithubWebhookDomainRepository; import com.devoops.exception.custom.GssException; import com.devoops.exception.errorcode.ErrorCode; +import com.devoops.service.github.WebHookService; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -21,7 +21,7 @@ class GitHubServiceTest extends BaseServiceTest { private GitHubClient gitHubClient; @Autowired - private GitHubService gitHubService; + private WebHookService webHookService; @Autowired private GithubWebhookDomainRepository webhookDomainRepository; @@ -34,9 +34,9 @@ class DeleteWebHook { void 웹_훅을_삭제_할_수_있다() { User user = userGenerator.generate("김건우"); GithubRepository repo = repoGenerator.generate(user, "건우의 레포"); - GithubWebhook webhook = webhookGenerator.generate(user, repo); + webhookGenerator.generate(user, repo); - gitHubService.deleteWebhook(user, repo.getId()); + webHookService.deleteWebhook(user, repo.getId()); assertThatThrownBy(() -> webhookDomainRepository.findByRepositoryId(repo.getId())) .isInstanceOf(GssException.class) diff --git a/gss-domain/src/main/java/com/devoops/domain/entity/github/repo/GithubRepoRegistryCount.java b/gss-domain/src/main/java/com/devoops/domain/entity/github/repo/GithubRepoRegistryCount.java index 86e61433..548fdbda 100644 --- a/gss-domain/src/main/java/com/devoops/domain/entity/github/repo/GithubRepoRegistryCount.java +++ b/gss-domain/src/main/java/com/devoops/domain/entity/github/repo/GithubRepoRegistryCount.java @@ -9,4 +9,13 @@ public class GithubRepoRegistryCount { private final long externalId; private final long reposCount; + + + public boolean isPositive() { + return reposCount > 0; + } + + public boolean greaterThan(long reposCount) { + return this.reposCount > reposCount; + } } diff --git a/gss-domain/src/main/java/com/devoops/domain/repository/github/repo/GithubRepoRegistryCountRepository.java b/gss-domain/src/main/java/com/devoops/domain/repository/github/repo/GithubRepoRegistryCountRepository.java index d5e904e6..4cc3f8a1 100644 --- a/gss-domain/src/main/java/com/devoops/domain/repository/github/repo/GithubRepoRegistryCountRepository.java +++ b/gss-domain/src/main/java/com/devoops/domain/repository/github/repo/GithubRepoRegistryCountRepository.java @@ -1,5 +1,16 @@ package com.devoops.domain.repository.github.repo; +import com.devoops.domain.entity.github.repo.GithubRepoRegistryCount; + public interface GithubRepoRegistryCountRepository { + GithubRepoRegistryCount getByExternalId(long externalId); + + boolean existsByExternalId(long externalId); + + GithubRepoRegistryCount plusCount(long externalId); + + GithubRepoRegistryCount minusCount(long externalId); + + void deleteByExternalId(long repoExternalId); } diff --git a/gss-domain/src/main/java/com/devoops/jpa/entity/github/repo/GithubRepoRegistryCountEntity.java b/gss-domain/src/main/java/com/devoops/jpa/entity/github/repo/GithubRepoRegistryCountEntity.java index 837c533b..7283629b 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/entity/github/repo/GithubRepoRegistryCountEntity.java +++ b/gss-domain/src/main/java/com/devoops/jpa/entity/github/repo/GithubRepoRegistryCountEntity.java @@ -1,5 +1,6 @@ package com.devoops.jpa.entity.github.repo; +import com.devoops.domain.entity.github.repo.GithubRepoRegistryCount; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; @@ -24,4 +25,16 @@ public class GithubRepoRegistryCountEntity { private long externalId; private long registryCount; + + public GithubRepoRegistryCount toDomainEntity() { + return new GithubRepoRegistryCount(this.externalId, this.registryCount); + } + + public void plusCount() { + this.registryCount += 1; + } + + public void minusCount() { + this.registryCount -= 1; + } } diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountJpaRepository.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountJpaRepository.java index 6af7f0f3..d7cbb7a4 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountJpaRepository.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountJpaRepository.java @@ -1,8 +1,14 @@ package com.devoops.jpa.repository.github.repo; import com.devoops.jpa.entity.github.repo.GithubRepoRegistryCountEntity; +import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; public interface GithubRepoRegistryCountJpaRepository extends JpaRepository { + Optional findByExternalId(long externalId); + + boolean existsByExternalId(long externalId); + + void deleteByExternalId(long repoExternalId); } diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountRepositoryImpl.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountRepositoryImpl.java index ebb001fa..e56809ee 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountRepositoryImpl.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountRepositoryImpl.java @@ -1,9 +1,57 @@ package com.devoops.jpa.repository.github.repo; +import com.devoops.domain.entity.github.repo.GithubRepoRegistryCount; import com.devoops.domain.repository.github.repo.GithubRepoRegistryCountRepository; +import com.devoops.exception.custom.GssException; +import com.devoops.exception.errorcode.ErrorCode; +import com.devoops.jpa.entity.github.repo.GithubRepoRegistryCountEntity; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; @Repository +@RequiredArgsConstructor public class GithubRepoRegistryCountRepositoryImpl implements GithubRepoRegistryCountRepository { + private final GithubRepoRegistryCountJpaRepository githubRepoRegistryCountJpaRepository; + + @Override + @Transactional(readOnly = true) + public GithubRepoRegistryCount getByExternalId(long externalId) { + return findRegistryEntityByExternalId(externalId) + .toDomainEntity(); + } + + @Override + @Transactional(readOnly = true) + public boolean existsByExternalId(long externalId) { + return githubRepoRegistryCountJpaRepository.existsByExternalId(externalId); + } + + @Override + @Transactional + public GithubRepoRegistryCount plusCount(long externalId) { + GithubRepoRegistryCountEntity registryEntity = findRegistryEntityByExternalId(externalId); + registryEntity.plusCount(); + return registryEntity.toDomainEntity(); + } + + @Override + @Transactional + public GithubRepoRegistryCount minusCount(long externalId) { + GithubRepoRegistryCountEntity registryEntity = findRegistryEntityByExternalId(externalId); + registryEntity.minusCount(); + return registryEntity.toDomainEntity(); + } + + @Override + @Transactional + public void deleteByExternalId(long repoExternalId) { + githubRepoRegistryCountJpaRepository.deleteByExternalId(repoExternalId); + } + + private GithubRepoRegistryCountEntity findRegistryEntityByExternalId(long externalId) { + return githubRepoRegistryCountJpaRepository.findByExternalId(externalId) + .orElseThrow(() -> new GssException(ErrorCode.NO_RESOURCE_FOUND)); + } } From 0de277e70542d1f6411287cab84924d7e94cccab Mon Sep 17 00:00:00 2001 From: coli Date: Tue, 12 Aug 2025 01:26:33 +0900 Subject: [PATCH 12/22] =?UTF-8?q?chore:=20exists=EB=A1=9C=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/devoops/service/github/WebHookService.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/gss-api-app/src/main/java/com/devoops/service/github/WebHookService.java b/gss-api-app/src/main/java/com/devoops/service/github/WebHookService.java index d55233c0..acb8c459 100644 --- a/gss-api-app/src/main/java/com/devoops/service/github/WebHookService.java +++ b/gss-api-app/src/main/java/com/devoops/service/github/WebHookService.java @@ -38,9 +38,7 @@ public class WebHookService { public void registerWebhook(User user, long repositoryId) { GithubRepository githubRepository = githubRepoDomainRepository.findByIdAndUserId(repositoryId, user.getId()); long repoExternalId = githubRepository.getExternalId(); - GithubRepoRegistryCount registryCount = registryCountRepository.getByExternalId(repoExternalId); - - if(registryCount.isPositive()) { + if(registryCountRepository.existsByExternalId(repoExternalId)) { registryCountRepository.plusCount(repoExternalId); return; } From 6566958738e16603d9bac8d01320e7ce677018b8 Mon Sep 17 00:00:00 2001 From: coli Date: Tue, 12 Aug 2025 01:27:05 +0900 Subject: [PATCH 13/22] =?UTF-8?q?refactor:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EB=A9=94=EC=84=9C=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/entity/github/repo/GithubRepoRegistryCount.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/gss-domain/src/main/java/com/devoops/domain/entity/github/repo/GithubRepoRegistryCount.java b/gss-domain/src/main/java/com/devoops/domain/entity/github/repo/GithubRepoRegistryCount.java index 548fdbda..a4649a69 100644 --- a/gss-domain/src/main/java/com/devoops/domain/entity/github/repo/GithubRepoRegistryCount.java +++ b/gss-domain/src/main/java/com/devoops/domain/entity/github/repo/GithubRepoRegistryCount.java @@ -10,11 +10,6 @@ public class GithubRepoRegistryCount { private final long externalId; private final long reposCount; - - public boolean isPositive() { - return reposCount > 0; - } - public boolean greaterThan(long reposCount) { return this.reposCount > reposCount; } From 57bf2cc8a100a870f02a4f182d16d852512ac04d Mon Sep 17 00:00:00 2001 From: coli Date: Tue, 12 Aug 2025 01:57:01 +0900 Subject: [PATCH 14/22] =?UTF-8?q?test:=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/github/WebHookService.java | 1 + .../devoops/service/GitHubServiceTest.java | 46 ------- .../service/github/WebHookServiceTest.java | 116 ++++++++++++++++++ .../GithubRepoRegistryCountRepository.java | 2 + .../repo/GithubRepoRegistryCountEntity.java | 8 ++ ...GithubRepoRegistryCountRepositoryImpl.java | 7 ++ 6 files changed, 134 insertions(+), 46 deletions(-) delete mode 100644 gss-api-app/src/test/java/com/devoops/service/GitHubServiceTest.java create mode 100644 gss-api-app/src/test/java/com/devoops/service/github/WebHookServiceTest.java diff --git a/gss-api-app/src/main/java/com/devoops/service/github/WebHookService.java b/gss-api-app/src/main/java/com/devoops/service/github/WebHookService.java index acb8c459..eaf56da8 100644 --- a/gss-api-app/src/main/java/com/devoops/service/github/WebHookService.java +++ b/gss-api-app/src/main/java/com/devoops/service/github/WebHookService.java @@ -42,6 +42,7 @@ public void registerWebhook(User user, long repositoryId) { registryCountRepository.plusCount(repoExternalId); return; } + registryCountRepository.save(new GithubRepoRegistryCount(repoExternalId, 1L)); GithubToken githubToken = githubTokenDomainRepository.getByUserId(user.getId()); createWebhook(githubToken, githubRepository); } diff --git a/gss-api-app/src/test/java/com/devoops/service/GitHubServiceTest.java b/gss-api-app/src/test/java/com/devoops/service/GitHubServiceTest.java deleted file mode 100644 index 503a73c4..00000000 --- a/gss-api-app/src/test/java/com/devoops/service/GitHubServiceTest.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.devoops.service; - -import static org.assertj.core.api.Assertions.assertThatThrownBy; - -import com.devoops.BaseServiceTest; -import com.devoops.client.GitHubClient; -import com.devoops.domain.entity.github.repo.GithubRepository; -import com.devoops.domain.entity.user.User; -import com.devoops.domain.repository.github.webhook.GithubWebhookDomainRepository; -import com.devoops.exception.custom.GssException; -import com.devoops.exception.errorcode.ErrorCode; -import com.devoops.service.github.WebHookService; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.bean.override.mockito.MockitoBean; - -class GitHubServiceTest extends BaseServiceTest { - - @MockitoBean - private GitHubClient gitHubClient; - - @Autowired - private WebHookService webHookService; - - @Autowired - private GithubWebhookDomainRepository webhookDomainRepository; - - - @Nested - class DeleteWebHook { - - @Test - void 웹_훅을_삭제_할_수_있다() { - User user = userGenerator.generate("김건우"); - GithubRepository repo = repoGenerator.generate(user, "건우의 레포"); - webhookGenerator.generate(user, repo); - - webHookService.deleteWebhook(user, repo.getId()); - - assertThatThrownBy(() -> webhookDomainRepository.findByRepositoryId(repo.getId())) - .isInstanceOf(GssException.class) - .hasMessage(ErrorCode.WEBHOOK_NOT_FOUND.getMessage()); - } - } -} diff --git a/gss-api-app/src/test/java/com/devoops/service/github/WebHookServiceTest.java b/gss-api-app/src/test/java/com/devoops/service/github/WebHookServiceTest.java new file mode 100644 index 00000000..e55436c5 --- /dev/null +++ b/gss-api-app/src/test/java/com/devoops/service/github/WebHookServiceTest.java @@ -0,0 +1,116 @@ +package com.devoops.service.github; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.jupiter.api.Assertions.assertAll; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.never; + +import com.devoops.BaseServiceTest; +import com.devoops.client.GitHubClient; +import com.devoops.domain.entity.github.repo.GithubRepoRegistryCount; +import com.devoops.domain.entity.github.repo.GithubRepository; +import com.devoops.domain.entity.user.User; +import com.devoops.domain.repository.github.repo.GithubRepoRegistryCountRepository; +import com.devoops.domain.repository.github.webhook.GithubWebhookDomainRepository; +import com.devoops.dto.response.WebHookCreateResponse; +import com.devoops.exception.custom.GssException; +import com.devoops.exception.errorcode.ErrorCode; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.bean.override.mockito.MockitoBean; + +class WebHookServiceTest extends BaseServiceTest { + + @MockitoBean + private GitHubClient gitHubClient; + + @Autowired + private WebHookService webHookService; + + @Autowired + private GithubWebhookDomainRepository webhookDomainRepository; + + @Autowired + private GithubRepoRegistryCountRepository registryCountRepository; + + @Nested + class RegisterWebHook { + + @Test + void 웹훅을_최초_등록할_수_있다() { + User user = userGenerator.generate("김건우"); + GithubRepository repo = repoGenerator.generate(user, "건우의 레포"); + Mockito.when(gitHubClient.createWebhook(anyString(), anyString(), anyString(), any())) + .thenReturn(new WebHookCreateResponse(1234L)); + + webHookService.registerWebhook(user, repo.getId()); + + Mockito.verify(gitHubClient, Mockito.times(1)) + .createWebhook(anyString(), anyString(), anyString(), any()); + } + + @Test + void 이미_웹훅이_등록된_레포지토리는_등록_카운트를_증가시킨다() { + User user = userGenerator.generate("김건우"); + GithubRepository repo = repoGenerator.generate(user, "건우의 레포"); + Mockito.when(gitHubClient.createWebhook(anyString(), anyString(), anyString(), any())) + .thenReturn(new WebHookCreateResponse(1234L)); + registryCountRepository.save(new GithubRepoRegistryCount(repo.getExternalId(), 1L)); + + webHookService.registerWebhook(user, repo.getId()); + + GithubRepoRegistryCount registryCount = registryCountRepository.getByExternalId(repo.getExternalId()); + assertAll( + () -> Mockito.verify(gitHubClient, never()) + .createWebhook(anyString(), anyString(), anyString(), any()), + () -> assertThat(registryCount.getReposCount()).isEqualTo(2L) + ); + } + } + + + @Nested + class DeleteWebHook { + + @Test + void 웹_훅을_삭제_할_수_있다() { + User user = userGenerator.generate("김건우"); + GithubRepository repo = repoGenerator.generate(user, "건우의 레포"); + webhookGenerator.generate(user, repo); + registryCountRepository.save(new GithubRepoRegistryCount(repo.getExternalId(), 1L)); + + webHookService.deleteWebhook(user, repo.getId()); + + boolean isExists = registryCountRepository.existsByExternalId(repo.getExternalId()); + assertAll( + () -> assertThatThrownBy(() -> webhookDomainRepository.findByRepositoryId(repo.getId())) + .isInstanceOf(GssException.class) + .hasMessage(ErrorCode.WEBHOOK_NOT_FOUND.getMessage()), + () -> assertThat(isExists).isFalse() + ); + } + + @Test + void 여러_유저가_트래킹하는_경우_웹훅_등록_카운트를_감소시킨다() { + User user = userGenerator.generate("김건우"); + GithubRepository repo = repoGenerator.generate(user, "건우의 레포"); + webhookGenerator.generate(user, repo); + registryCountRepository.save(new GithubRepoRegistryCount(repo.getExternalId(), 2L)); + + webHookService.deleteWebhook(user, repo.getId()); + + GithubRepoRegistryCount registryCount = registryCountRepository.getByExternalId(repo.getExternalId()); + assertAll( + () -> assertThatCode(() -> webhookDomainRepository.findByRepositoryId(repo.getId())) + .doesNotThrowAnyException(), + () -> assertThat(registryCount.getReposCount()).isEqualTo(1L) + ); + } + } +} + diff --git a/gss-domain/src/main/java/com/devoops/domain/repository/github/repo/GithubRepoRegistryCountRepository.java b/gss-domain/src/main/java/com/devoops/domain/repository/github/repo/GithubRepoRegistryCountRepository.java index 4cc3f8a1..13817a21 100644 --- a/gss-domain/src/main/java/com/devoops/domain/repository/github/repo/GithubRepoRegistryCountRepository.java +++ b/gss-domain/src/main/java/com/devoops/domain/repository/github/repo/GithubRepoRegistryCountRepository.java @@ -4,6 +4,8 @@ public interface GithubRepoRegistryCountRepository { + GithubRepoRegistryCount save(GithubRepoRegistryCount githubRepoRegistryCount); + GithubRepoRegistryCount getByExternalId(long externalId); boolean existsByExternalId(long externalId); diff --git a/gss-domain/src/main/java/com/devoops/jpa/entity/github/repo/GithubRepoRegistryCountEntity.java b/gss-domain/src/main/java/com/devoops/jpa/entity/github/repo/GithubRepoRegistryCountEntity.java index 7283629b..47b58031 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/entity/github/repo/GithubRepoRegistryCountEntity.java +++ b/gss-domain/src/main/java/com/devoops/jpa/entity/github/repo/GithubRepoRegistryCountEntity.java @@ -26,6 +26,14 @@ public class GithubRepoRegistryCountEntity { private long registryCount; + public static GithubRepoRegistryCountEntity from(GithubRepoRegistryCount githubRepoRegistryCount) { + return new GithubRepoRegistryCountEntity( + null, + githubRepoRegistryCount.getExternalId(), + githubRepoRegistryCount.getReposCount() + ); + } + public GithubRepoRegistryCount toDomainEntity() { return new GithubRepoRegistryCount(this.externalId, this.registryCount); } diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountRepositoryImpl.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountRepositoryImpl.java index e56809ee..65367570 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountRepositoryImpl.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountRepositoryImpl.java @@ -15,6 +15,13 @@ public class GithubRepoRegistryCountRepositoryImpl implements GithubRepoRegistry private final GithubRepoRegistryCountJpaRepository githubRepoRegistryCountJpaRepository; + @Override + public GithubRepoRegistryCount save(GithubRepoRegistryCount githubRepoRegistryCount) { + GithubRepoRegistryCountEntity registryCountEntity = GithubRepoRegistryCountEntity.from(githubRepoRegistryCount); + return githubRepoRegistryCountJpaRepository.save(registryCountEntity) + .toDomainEntity(); + } + @Override @Transactional(readOnly = true) public GithubRepoRegistryCount getByExternalId(long externalId) { From f2f9f34080edb1fbc069dcde811c855dc4f43220 Mon Sep 17 00:00:00 2001 From: coli Date: Tue, 12 Aug 2025 01:58:03 +0900 Subject: [PATCH 15/22] =?UTF-8?q?chore:=20=ED=8C=A8=ED=82=A4=EC=A7=80=20?= =?UTF-8?q?=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/devoops/service/github/WebHookService.java | 4 ++-- .../com/devoops/service/github/WebHookServiceTest.java | 4 ++-- .../github/{repo => webhook}/GithubRepoRegistryCount.java | 2 +- .../GithubRepoRegistryCountRepository.java | 4 ++-- .../{repo => webhook}/GithubRepoRegistryCountEntity.java | 4 ++-- .../GithubRepoRegistryCountJpaRepository.java | 4 ++-- .../GithubRepoRegistryCountRepositoryImpl.java | 8 ++++---- 7 files changed, 15 insertions(+), 15 deletions(-) rename gss-domain/src/main/java/com/devoops/domain/entity/github/{repo => webhook}/GithubRepoRegistryCount.java (86%) rename gss-domain/src/main/java/com/devoops/domain/repository/github/{repo => webhook}/GithubRepoRegistryCountRepository.java (76%) rename gss-domain/src/main/java/com/devoops/jpa/entity/github/{repo => webhook}/GithubRepoRegistryCountEntity.java (91%) rename gss-domain/src/main/java/com/devoops/jpa/repository/github/{repo => webhook}/GithubRepoRegistryCountJpaRepository.java (75%) rename gss-domain/src/main/java/com/devoops/jpa/repository/github/{repo => webhook}/GithubRepoRegistryCountRepositoryImpl.java (88%) diff --git a/gss-api-app/src/main/java/com/devoops/service/github/WebHookService.java b/gss-api-app/src/main/java/com/devoops/service/github/WebHookService.java index eaf56da8..63bf4846 100644 --- a/gss-api-app/src/main/java/com/devoops/service/github/WebHookService.java +++ b/gss-api-app/src/main/java/com/devoops/service/github/WebHookService.java @@ -1,13 +1,13 @@ package com.devoops.service.github; import com.devoops.client.GitHubClient; -import com.devoops.domain.entity.github.repo.GithubRepoRegistryCount; +import com.devoops.domain.entity.github.webhook.GithubRepoRegistryCount; import com.devoops.domain.entity.github.repo.GithubRepository; import com.devoops.domain.entity.github.token.GithubToken; import com.devoops.domain.entity.github.webhook.GithubWebhook; import com.devoops.domain.entity.user.User; import com.devoops.domain.repository.github.repo.GithubRepoDomainRepository; -import com.devoops.domain.repository.github.repo.GithubRepoRegistryCountRepository; +import com.devoops.domain.repository.github.webhook.GithubRepoRegistryCountRepository; import com.devoops.domain.repository.github.token.GithubTokenDomainRepository; import com.devoops.domain.repository.github.webhook.GithubWebhookDomainRepository; import com.devoops.dto.request.GitHubWebhookRequest; diff --git a/gss-api-app/src/test/java/com/devoops/service/github/WebHookServiceTest.java b/gss-api-app/src/test/java/com/devoops/service/github/WebHookServiceTest.java index e55436c5..9e1c7d91 100644 --- a/gss-api-app/src/test/java/com/devoops/service/github/WebHookServiceTest.java +++ b/gss-api-app/src/test/java/com/devoops/service/github/WebHookServiceTest.java @@ -10,10 +10,10 @@ import com.devoops.BaseServiceTest; import com.devoops.client.GitHubClient; -import com.devoops.domain.entity.github.repo.GithubRepoRegistryCount; +import com.devoops.domain.entity.github.webhook.GithubRepoRegistryCount; import com.devoops.domain.entity.github.repo.GithubRepository; import com.devoops.domain.entity.user.User; -import com.devoops.domain.repository.github.repo.GithubRepoRegistryCountRepository; +import com.devoops.domain.repository.github.webhook.GithubRepoRegistryCountRepository; import com.devoops.domain.repository.github.webhook.GithubWebhookDomainRepository; import com.devoops.dto.response.WebHookCreateResponse; import com.devoops.exception.custom.GssException; diff --git a/gss-domain/src/main/java/com/devoops/domain/entity/github/repo/GithubRepoRegistryCount.java b/gss-domain/src/main/java/com/devoops/domain/entity/github/webhook/GithubRepoRegistryCount.java similarity index 86% rename from gss-domain/src/main/java/com/devoops/domain/entity/github/repo/GithubRepoRegistryCount.java rename to gss-domain/src/main/java/com/devoops/domain/entity/github/webhook/GithubRepoRegistryCount.java index a4649a69..27a4ad68 100644 --- a/gss-domain/src/main/java/com/devoops/domain/entity/github/repo/GithubRepoRegistryCount.java +++ b/gss-domain/src/main/java/com/devoops/domain/entity/github/webhook/GithubRepoRegistryCount.java @@ -1,4 +1,4 @@ -package com.devoops.domain.entity.github.repo; +package com.devoops.domain.entity.github.webhook; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/gss-domain/src/main/java/com/devoops/domain/repository/github/repo/GithubRepoRegistryCountRepository.java b/gss-domain/src/main/java/com/devoops/domain/repository/github/webhook/GithubRepoRegistryCountRepository.java similarity index 76% rename from gss-domain/src/main/java/com/devoops/domain/repository/github/repo/GithubRepoRegistryCountRepository.java rename to gss-domain/src/main/java/com/devoops/domain/repository/github/webhook/GithubRepoRegistryCountRepository.java index 13817a21..11d3ce81 100644 --- a/gss-domain/src/main/java/com/devoops/domain/repository/github/repo/GithubRepoRegistryCountRepository.java +++ b/gss-domain/src/main/java/com/devoops/domain/repository/github/webhook/GithubRepoRegistryCountRepository.java @@ -1,6 +1,6 @@ -package com.devoops.domain.repository.github.repo; +package com.devoops.domain.repository.github.webhook; -import com.devoops.domain.entity.github.repo.GithubRepoRegistryCount; +import com.devoops.domain.entity.github.webhook.GithubRepoRegistryCount; public interface GithubRepoRegistryCountRepository { diff --git a/gss-domain/src/main/java/com/devoops/jpa/entity/github/repo/GithubRepoRegistryCountEntity.java b/gss-domain/src/main/java/com/devoops/jpa/entity/github/webhook/GithubRepoRegistryCountEntity.java similarity index 91% rename from gss-domain/src/main/java/com/devoops/jpa/entity/github/repo/GithubRepoRegistryCountEntity.java rename to gss-domain/src/main/java/com/devoops/jpa/entity/github/webhook/GithubRepoRegistryCountEntity.java index 47b58031..c76e97e1 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/entity/github/repo/GithubRepoRegistryCountEntity.java +++ b/gss-domain/src/main/java/com/devoops/jpa/entity/github/webhook/GithubRepoRegistryCountEntity.java @@ -1,6 +1,6 @@ -package com.devoops.jpa.entity.github.repo; +package com.devoops.jpa.entity.github.webhook; -import com.devoops.domain.entity.github.repo.GithubRepoRegistryCount; +import com.devoops.domain.entity.github.webhook.GithubRepoRegistryCount; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountJpaRepository.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubRepoRegistryCountJpaRepository.java similarity index 75% rename from gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountJpaRepository.java rename to gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubRepoRegistryCountJpaRepository.java index d7cbb7a4..59cabfe5 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountJpaRepository.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubRepoRegistryCountJpaRepository.java @@ -1,6 +1,6 @@ -package com.devoops.jpa.repository.github.repo; +package com.devoops.jpa.repository.github.webhook; -import com.devoops.jpa.entity.github.repo.GithubRepoRegistryCountEntity; +import com.devoops.jpa.entity.github.webhook.GithubRepoRegistryCountEntity; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountRepositoryImpl.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubRepoRegistryCountRepositoryImpl.java similarity index 88% rename from gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountRepositoryImpl.java rename to gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubRepoRegistryCountRepositoryImpl.java index 65367570..e10991ac 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/repo/GithubRepoRegistryCountRepositoryImpl.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubRepoRegistryCountRepositoryImpl.java @@ -1,10 +1,10 @@ -package com.devoops.jpa.repository.github.repo; +package com.devoops.jpa.repository.github.webhook; -import com.devoops.domain.entity.github.repo.GithubRepoRegistryCount; -import com.devoops.domain.repository.github.repo.GithubRepoRegistryCountRepository; +import com.devoops.domain.entity.github.webhook.GithubRepoRegistryCount; +import com.devoops.domain.repository.github.webhook.GithubRepoRegistryCountRepository; import com.devoops.exception.custom.GssException; import com.devoops.exception.errorcode.ErrorCode; -import com.devoops.jpa.entity.github.repo.GithubRepoRegistryCountEntity; +import com.devoops.jpa.entity.github.webhook.GithubRepoRegistryCountEntity; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; From dde44db22068a5b0e06f06b75342874403cb9dca Mon Sep 17 00:00:00 2001 From: coli Date: Tue, 12 Aug 2025 02:06:11 +0900 Subject: [PATCH 16/22] =?UTF-8?q?test:=20=EC=8B=A4=ED=8C=A8=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/facade/RepositoryFacadeServiceTest.java | 2 +- .../com/devoops/service/github/WebHookServiceTest.java | 9 ++++----- .../java/com/devoops/generator/WebhookGenerator.java | 8 +++++++- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/gss-api-app/src/test/java/com/devoops/service/facade/RepositoryFacadeServiceTest.java b/gss-api-app/src/test/java/com/devoops/service/facade/RepositoryFacadeServiceTest.java index bca3da2d..347e5372 100644 --- a/gss-api-app/src/test/java/com/devoops/service/facade/RepositoryFacadeServiceTest.java +++ b/gss-api-app/src/test/java/com/devoops/service/facade/RepositoryFacadeServiceTest.java @@ -88,7 +88,7 @@ class Delete { void 웹훅을_찾지_못해도_레포지토리_트래킹을_끊을_수_있다() { User user = userGenerator.generate("김건우"); GithubRepository repo = repoGenerator.generate(user, "건우의 레포"); - webhookGenerator.generate(user, repo); + webhookGenerator.generate(user, repo, 1L); Mockito.doThrow(new GithubNotFoundException("mocking error")) .when(gitHubClient) .deleteWebhook(anyString(), anyString(), anyString(), anyLong()); diff --git a/gss-api-app/src/test/java/com/devoops/service/github/WebHookServiceTest.java b/gss-api-app/src/test/java/com/devoops/service/github/WebHookServiceTest.java index 9e1c7d91..ab16d368 100644 --- a/gss-api-app/src/test/java/com/devoops/service/github/WebHookServiceTest.java +++ b/gss-api-app/src/test/java/com/devoops/service/github/WebHookServiceTest.java @@ -57,10 +57,11 @@ class RegisterWebHook { @Test void 이미_웹훅이_등록된_레포지토리는_등록_카운트를_증가시킨다() { User user = userGenerator.generate("김건우"); + User user2 = userGenerator.generate("콜리"); GithubRepository repo = repoGenerator.generate(user, "건우의 레포"); Mockito.when(gitHubClient.createWebhook(anyString(), anyString(), anyString(), any())) .thenReturn(new WebHookCreateResponse(1234L)); - registryCountRepository.save(new GithubRepoRegistryCount(repo.getExternalId(), 1L)); + webhookGenerator.generate(user2, repo, 1L); webHookService.registerWebhook(user, repo.getId()); @@ -81,8 +82,7 @@ class DeleteWebHook { void 웹_훅을_삭제_할_수_있다() { User user = userGenerator.generate("김건우"); GithubRepository repo = repoGenerator.generate(user, "건우의 레포"); - webhookGenerator.generate(user, repo); - registryCountRepository.save(new GithubRepoRegistryCount(repo.getExternalId(), 1L)); + webhookGenerator.generate(user, repo, 1L); webHookService.deleteWebhook(user, repo.getId()); @@ -99,8 +99,7 @@ class DeleteWebHook { void 여러_유저가_트래킹하는_경우_웹훅_등록_카운트를_감소시킨다() { User user = userGenerator.generate("김건우"); GithubRepository repo = repoGenerator.generate(user, "건우의 레포"); - webhookGenerator.generate(user, repo); - registryCountRepository.save(new GithubRepoRegistryCount(repo.getExternalId(), 2L)); + webhookGenerator.generate(user, repo, 2L); webHookService.deleteWebhook(user, repo.getId()); diff --git a/gss-domain/src/testFixtures/java/com/devoops/generator/WebhookGenerator.java b/gss-domain/src/testFixtures/java/com/devoops/generator/WebhookGenerator.java index 0445ba3f..077555c1 100644 --- a/gss-domain/src/testFixtures/java/com/devoops/generator/WebhookGenerator.java +++ b/gss-domain/src/testFixtures/java/com/devoops/generator/WebhookGenerator.java @@ -1,8 +1,10 @@ package com.devoops.generator; import com.devoops.domain.entity.github.repo.GithubRepository; +import com.devoops.domain.entity.github.webhook.GithubRepoRegistryCount; import com.devoops.domain.entity.github.webhook.GithubWebhook; import com.devoops.domain.entity.user.User; +import com.devoops.domain.repository.github.webhook.GithubRepoRegistryCountRepository; import com.devoops.domain.repository.github.webhook.GithubWebhookDomainRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -13,8 +15,12 @@ public class WebhookGenerator { @Autowired private GithubWebhookDomainRepository githubWebhookDomainRepository; - public GithubWebhook generate(User user, GithubRepository repository) { + @Autowired + private GithubRepoRegistryCountRepository githubRepoRegistryCountRepository; + + public GithubWebhook generate(User user, GithubRepository repository, long trackingCount) { GithubWebhook webHook = new GithubWebhook(101L, repository.getId()); + githubRepoRegistryCountRepository.save(new GithubRepoRegistryCount(repository.getExternalId(), trackingCount)); return githubWebhookDomainRepository.save(webHook); } } From 0d72cf65d5b6fb59271005dccc4b295bb96e0c38 Mon Sep 17 00:00:00 2001 From: coli Date: Thu, 14 Aug 2025 17:42:08 +0900 Subject: [PATCH 17/22] =?UTF-8?q?feat:=20=EC=9B=B9=ED=9B=85=20=EC=84=9C?= =?UTF-8?q?=EB=B9=84=EC=8A=A4=EC=97=90=20=ED=8A=B8=EB=9E=9C=EC=9E=AD?= =?UTF-8?q?=EC=85=98=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/devoops/service/github/WebHookService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/gss-api-app/src/main/java/com/devoops/service/github/WebHookService.java b/gss-api-app/src/main/java/com/devoops/service/github/WebHookService.java index 63bf4846..232586ef 100644 --- a/gss-api-app/src/main/java/com/devoops/service/github/WebHookService.java +++ b/gss-api-app/src/main/java/com/devoops/service/github/WebHookService.java @@ -35,6 +35,7 @@ public class WebHookService { private final GithubWebhookDomainRepository githubWebhookDomainRepository; private final GithubRepoRegistryCountRepository registryCountRepository; + @Transactional public void registerWebhook(User user, long repositoryId) { GithubRepository githubRepository = githubRepoDomainRepository.findByIdAndUserId(repositoryId, user.getId()); long repoExternalId = githubRepository.getExternalId(); From 3659c1eb68e548e6f04ac9c71de31fca968f54fb Mon Sep 17 00:00:00 2001 From: coli Date: Thu, 14 Aug 2025 17:47:38 +0900 Subject: [PATCH 18/22] =?UTF-8?q?refactor:=20=EA=B5=AC=EC=B2=B4=EC=A0=81?= =?UTF-8?q?=EC=9D=B8=20=EC=97=90=EB=9F=AC=20=ED=83=80=EC=9E=85=EC=9C=BC?= =?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 --- .../main/java/com/devoops/exception/errorcode/ErrorCode.java | 1 + .../github/token/GithubTokenDomainRepositoryImpl.java | 2 +- .../github/webhook/GithubRepoRegistryCountRepositoryImpl.java | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/gss-common/src/main/java/com/devoops/exception/errorcode/ErrorCode.java b/gss-common/src/main/java/com/devoops/exception/errorcode/ErrorCode.java index 67a62c48..783b72ed 100644 --- a/gss-common/src/main/java/com/devoops/exception/errorcode/ErrorCode.java +++ b/gss-common/src/main/java/com/devoops/exception/errorcode/ErrorCode.java @@ -26,6 +26,7 @@ public enum ErrorCode { //5XX INTERNAL_SERVER_ERROR(500, "서버 오류가 발생했습니다. 관리자에게 문의하세요."), GITHUB_REPOSITORY_NOT_FOUND(500, "찾는 레포지토리가 존재하지 않습니다"), + GITHUB_REPOSITORY_REGISTRY_COUNT_NOT_FOUND(500, "찾는 레포지토리 등록 카운트가 존재하지 않습니다"), GITHUB_TOKEN_NOT_FOUND(500, "찾는 깃허브 토큰이 존재하지 않습니다"), PULL_REQUEST_NOT_FOUND(500, "찾는 풀 리퀘스트가 존재하지 않습니다"), QUESTION_NOT_FOUND(500, "찾는 질문이 존재하지 않습니다"), diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/token/GithubTokenDomainRepositoryImpl.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/token/GithubTokenDomainRepositoryImpl.java index 88f83ebe..f80e2eb3 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/token/GithubTokenDomainRepositoryImpl.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/token/GithubTokenDomainRepositoryImpl.java @@ -28,6 +28,6 @@ public GithubToken save(GithubToken token, User owner) { public GithubToken getByUserId(long userId) { return githubTokenJpaRepository.findByUserId(userId) .map(GithubTokenEntity::toDomainEntity) - .orElseThrow(() -> new GssException(ErrorCode.NO_RESOURCE_FOUND)); + .orElseThrow(() -> new GssException(ErrorCode.GITHUB_TOKEN_NOT_FOUND)); } } diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubRepoRegistryCountRepositoryImpl.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubRepoRegistryCountRepositoryImpl.java index e10991ac..9e0f8085 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubRepoRegistryCountRepositoryImpl.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubRepoRegistryCountRepositoryImpl.java @@ -59,6 +59,6 @@ public void deleteByExternalId(long repoExternalId) { private GithubRepoRegistryCountEntity findRegistryEntityByExternalId(long externalId) { return githubRepoRegistryCountJpaRepository.findByExternalId(externalId) - .orElseThrow(() -> new GssException(ErrorCode.NO_RESOURCE_FOUND)); + .orElseThrow(() -> new GssException(ErrorCode.GITHUB_REPOSITORY_REGISTRY_COUNT_NOT_FOUND)); } } From 5aeca5d6aef076112a858ac7357e24ea138f90d7 Mon Sep 17 00:00:00 2001 From: coli Date: Thu, 14 Aug 2025 17:48:55 +0900 Subject: [PATCH 19/22] =?UTF-8?q?fix:=20=EC=82=AC=EC=9A=A9=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8A=94=20path=20variable=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/devoops/controller/webhook/WebhookController.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/gss-mcp-app/src/main/java/com/devoops/controller/webhook/WebhookController.java b/gss-mcp-app/src/main/java/com/devoops/controller/webhook/WebhookController.java index 2e2d9405..1ea77b84 100644 --- a/gss-mcp-app/src/main/java/com/devoops/controller/webhook/WebhookController.java +++ b/gss-mcp-app/src/main/java/com/devoops/controller/webhook/WebhookController.java @@ -23,10 +23,9 @@ public class WebhookController { /** * webhook url : https://mcp.dev-oops.kr/api/webhooks/github/pull-requests */ - @PostMapping("/github/pull-requests/{repositoryId}") + @PostMapping("/github/pull-requests") public ResponseEntity getWebhookPullRequest( - @RequestBody GitHubWebhookEventRequest gitHubWebhookEventRequest, - @PathVariable(name = "repositoryId") Long appRepositoryId + @RequestBody GitHubWebhookEventRequest gitHubWebhookEventRequest ) { log.info("request : {} ", gitHubWebhookEventRequest); if(gitHubWebhookEventRequest.isMerged()) { From 326ba967b460b9a8c4cffdf9a9bed077e374f4cf Mon Sep 17 00:00:00 2001 From: coli Date: Thu, 14 Aug 2025 17:56:38 +0900 Subject: [PATCH 20/22] =?UTF-8?q?refactor:=20=EC=9B=90=EC=9E=90=EC=A0=81?= =?UTF-8?q?=20=EC=BF=BC=EB=A6=AC=EB=A5=BC=20=ED=86=B5=ED=95=B4=20=EB=8F=99?= =?UTF-8?q?=EC=8B=9C=EC=84=B1=20=EC=9D=B4=EC=8A=88=20=EB=8C=80=EC=9D=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../devoops/exception/errorcode/ErrorCode.java | 1 + .../GithubRepoRegistryCountRepository.java | 4 ++-- .../GithubRepoRegistryCountJpaRepository.java | 11 +++++++++++ .../GithubRepoRegistryCountRepositoryImpl.java | 15 +++++++-------- 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/gss-common/src/main/java/com/devoops/exception/errorcode/ErrorCode.java b/gss-common/src/main/java/com/devoops/exception/errorcode/ErrorCode.java index 783b72ed..3f80dc0c 100644 --- a/gss-common/src/main/java/com/devoops/exception/errorcode/ErrorCode.java +++ b/gss-common/src/main/java/com/devoops/exception/errorcode/ErrorCode.java @@ -27,6 +27,7 @@ public enum ErrorCode { INTERNAL_SERVER_ERROR(500, "서버 오류가 발생했습니다. 관리자에게 문의하세요."), GITHUB_REPOSITORY_NOT_FOUND(500, "찾는 레포지토리가 존재하지 않습니다"), GITHUB_REPOSITORY_REGISTRY_COUNT_NOT_FOUND(500, "찾는 레포지토리 등록 카운트가 존재하지 않습니다"), + INVALID_GITHUB_REPOSITORY_REGISTRY_COUNT(500, "레포지토리 등록 카운트가 0이하입니다"), GITHUB_TOKEN_NOT_FOUND(500, "찾는 깃허브 토큰이 존재하지 않습니다"), PULL_REQUEST_NOT_FOUND(500, "찾는 풀 리퀘스트가 존재하지 않습니다"), QUESTION_NOT_FOUND(500, "찾는 질문이 존재하지 않습니다"), diff --git a/gss-domain/src/main/java/com/devoops/domain/repository/github/webhook/GithubRepoRegistryCountRepository.java b/gss-domain/src/main/java/com/devoops/domain/repository/github/webhook/GithubRepoRegistryCountRepository.java index 11d3ce81..a9d28b74 100644 --- a/gss-domain/src/main/java/com/devoops/domain/repository/github/webhook/GithubRepoRegistryCountRepository.java +++ b/gss-domain/src/main/java/com/devoops/domain/repository/github/webhook/GithubRepoRegistryCountRepository.java @@ -10,9 +10,9 @@ public interface GithubRepoRegistryCountRepository { boolean existsByExternalId(long externalId); - GithubRepoRegistryCount plusCount(long externalId); + void plusCount(long externalId); - GithubRepoRegistryCount minusCount(long externalId); + void minusCount(long externalId); void deleteByExternalId(long repoExternalId); } diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubRepoRegistryCountJpaRepository.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubRepoRegistryCountJpaRepository.java index 59cabfe5..41c448cc 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubRepoRegistryCountJpaRepository.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubRepoRegistryCountJpaRepository.java @@ -3,6 +3,9 @@ import com.devoops.jpa.entity.github.webhook.GithubRepoRegistryCountEntity; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; public interface GithubRepoRegistryCountJpaRepository extends JpaRepository { @@ -10,5 +13,13 @@ public interface GithubRepoRegistryCountJpaRepository extends JpaRepository 0") + int decrementByExternalIdIfPositive(@Param("externalId") long externalId); + void deleteByExternalId(long repoExternalId); } diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubRepoRegistryCountRepositoryImpl.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubRepoRegistryCountRepositoryImpl.java index 9e0f8085..400f8d28 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubRepoRegistryCountRepositoryImpl.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubRepoRegistryCountRepositoryImpl.java @@ -37,18 +37,17 @@ public boolean existsByExternalId(long externalId) { @Override @Transactional - public GithubRepoRegistryCount plusCount(long externalId) { - GithubRepoRegistryCountEntity registryEntity = findRegistryEntityByExternalId(externalId); - registryEntity.plusCount(); - return registryEntity.toDomainEntity(); + public void plusCount(long externalId) { + githubRepoRegistryCountJpaRepository.incrementByExternalId(externalId); } @Override @Transactional - public GithubRepoRegistryCount minusCount(long externalId) { - GithubRepoRegistryCountEntity registryEntity = findRegistryEntityByExternalId(externalId); - registryEntity.minusCount(); - return registryEntity.toDomainEntity(); + public void minusCount(long externalId) { + int updatedRow = githubRepoRegistryCountJpaRepository.decrementByExternalIdIfPositive(externalId); + if (updatedRow == 0) { + throw new GssException(ErrorCode.GITHUB_REPOSITORY_REGISTRY_COUNT_NOT_FOUND); + } } @Override From f1fd798268596fff7541257bc48cbbdd992ab468 Mon Sep 17 00:00:00 2001 From: coli Date: Thu, 14 Aug 2025 18:12:40 +0900 Subject: [PATCH 21/22] =?UTF-8?q?refactor:=20updatedRow=20=EA=B2=80?= =?UTF-8?q?=EC=A6=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../github/webhook/GithubRepoRegistryCountJpaRepository.java | 4 ++-- .../webhook/GithubRepoRegistryCountRepositoryImpl.java | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubRepoRegistryCountJpaRepository.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubRepoRegistryCountJpaRepository.java index 41c448cc..e9ee4822 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubRepoRegistryCountJpaRepository.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubRepoRegistryCountJpaRepository.java @@ -13,11 +13,11 @@ public interface GithubRepoRegistryCountJpaRepository extends JpaRepository 0") int decrementByExternalIdIfPositive(@Param("externalId") long externalId); diff --git a/gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubRepoRegistryCountRepositoryImpl.java b/gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubRepoRegistryCountRepositoryImpl.java index 400f8d28..ca46ef58 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubRepoRegistryCountRepositoryImpl.java +++ b/gss-domain/src/main/java/com/devoops/jpa/repository/github/webhook/GithubRepoRegistryCountRepositoryImpl.java @@ -38,7 +38,10 @@ public boolean existsByExternalId(long externalId) { @Override @Transactional public void plusCount(long externalId) { - githubRepoRegistryCountJpaRepository.incrementByExternalId(externalId); + int updatedRow = githubRepoRegistryCountJpaRepository.incrementByExternalId(externalId); + if (updatedRow == 0) { + throw new GssException(ErrorCode.GITHUB_REPOSITORY_REGISTRY_COUNT_NOT_FOUND); + } } @Override From 5b83e1002bc502c65a2d7e966de9b7931d62dd30 Mon Sep 17 00:00:00 2001 From: coli Date: Mon, 18 Aug 2025 22:14:33 +0900 Subject: [PATCH 22/22] =?UTF-8?q?refactor:=20=EB=8F=99=EC=8B=9C=EC=84=B1?= =?UTF-8?q?=20=EC=9D=B4=EC=8A=88=EB=A5=BC=20=EC=98=88=EB=B0=A9=ED=95=98?= =?UTF-8?q?=EA=B3=A0=EC=9E=90=20updatedRow=EB=A5=BC=20=EC=9B=90=EC=9E=90?= =?UTF-8?q?=EC=84=B1=20=EC=BF=BC=EB=A6=AC=EB=A1=9C=20=EB=8C=80=EC=B2=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../github/webhook/GithubRepoRegistryCountEntity.java | 8 -------- 1 file changed, 8 deletions(-) diff --git a/gss-domain/src/main/java/com/devoops/jpa/entity/github/webhook/GithubRepoRegistryCountEntity.java b/gss-domain/src/main/java/com/devoops/jpa/entity/github/webhook/GithubRepoRegistryCountEntity.java index c76e97e1..c12816c3 100644 --- a/gss-domain/src/main/java/com/devoops/jpa/entity/github/webhook/GithubRepoRegistryCountEntity.java +++ b/gss-domain/src/main/java/com/devoops/jpa/entity/github/webhook/GithubRepoRegistryCountEntity.java @@ -37,12 +37,4 @@ public static GithubRepoRegistryCountEntity from(GithubRepoRegistryCount githubR public GithubRepoRegistryCount toDomainEntity() { return new GithubRepoRegistryCount(this.externalId, this.registryCount); } - - public void plusCount() { - this.registryCount += 1; - } - - public void minusCount() { - this.registryCount -= 1; - } }