Skip to content

Commit a098ff3

Browse files
authored
Merge pull request #682 from solid-connection/hotfix/260220
fix: applications 중복 활성 지원서 조회 시 500 오류 방지
2 parents 6797e20 + 1040109 commit a098ff3

File tree

3 files changed

+10
-11
lines changed

3 files changed

+10
-11
lines changed

src/main/java/com/example/solidconnection/application/repository/ApplicationRepository.java

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,13 @@ public interface ApplicationRepository extends JpaRepository<Application, Long>
2727
""")
2828
List<Application> findAllByUnivApplyInfoIds(@Param("univApplyInfoIds") List<Long> univApplyInfoIds, @Param("status") VerifyStatus status, @Param("termId") long termId);
2929

30-
@Query("""
31-
SELECT a
32-
FROM Application a
33-
WHERE a.siteUserId = :siteUserId
34-
AND a.termId = :termId
35-
AND a.isDelete = false
36-
""")
37-
Optional<Application> findBySiteUserIdAndTermId(@Param("siteUserId") long siteUserId, @Param("termId") long termId);
30+
// TODO: 근본 해결 필요
31+
// 지원서 유일성은 DB 제약으로 강제하고
32+
// 이 조회는 임시 회피 로직을 제거하는 방향으로 수정 필요.
33+
Optional<Application> findTopBySiteUserIdAndTermIdAndIsDeleteFalseOrderByIdDesc(long siteUserId, long termId);
3834

3935
default Application getApplicationBySiteUserIdAndTermId(long siteUserId, long termId) {
40-
return findBySiteUserIdAndTermId(siteUserId, termId)
36+
return findTopBySiteUserIdAndTermIdAndIsDeleteFalseOrderByIdDesc(siteUserId, termId)
4137
.orElseThrow(() -> new CustomException(APPLICATION_NOT_FOUND));
4238
}
4339

src/main/java/com/example/solidconnection/application/service/ApplicationSubmissionService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ public ApplicationSubmissionResponse apply(long siteUserId, ApplyRequest applyRe
6262
Long secondChoiceUnivApplyInfoId = univApplyInfoChoiceRequest.secondChoiceUnivApplyInfoId();
6363
Long thirdChoiceUnivApplyInfoId = univApplyInfoChoiceRequest.thirdChoiceUnivApplyInfoId();
6464

65-
Optional<Application> existingApplication = applicationRepository.findBySiteUserIdAndTermId(siteUser.getId(), term.getId());
65+
Optional<Application> existingApplication =
66+
applicationRepository.findTopBySiteUserIdAndTermIdAndIsDeleteFalseOrderByIdDesc(siteUser.getId(), term.getId());
6667
int updateCount = existingApplication
6768
.map(application -> {
6869
validateUpdateLimitNotExceed(application);

src/test/java/com/example/solidconnection/application/service/ApplicationSubmissionServiceTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,9 @@ void setUp() {
8989
ApplicationSubmissionResponse response = applicationSubmissionService.apply(user.getId(), request);
9090

9191
// then
92-
Application savedApplication = applicationRepository.findBySiteUserIdAndTermId(user.getId(), term.getId()).orElseThrow();
92+
Application savedApplication = applicationRepository
93+
.findTopBySiteUserIdAndTermIdAndIsDeleteFalseOrderByIdDesc(user.getId(), term.getId())
94+
.orElseThrow();
9395
assertAll(
9496
() -> assertThat(response.totalApplyCount())
9597
.isEqualTo(APPLICATION_UPDATE_COUNT_LIMIT),

0 commit comments

Comments
 (0)