From 846fac3a9568a7fac0698c224f33fa516c65e860 Mon Sep 17 00:00:00 2001 From: whqtker Date: Thu, 18 Jun 2026 16:18:23 +0900 Subject: [PATCH 1/2] =?UTF-8?q?refactor:=20(english=5Fname,=20korean=5Fnam?= =?UTF-8?q?e)=20=EC=A1=B0=ED=95=A9=EC=9C=BC=EB=A1=9C=20UK=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=ED=95=98=EB=8F=84=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/AdminHostUniversityService.java | 18 ------------- .../university/domain/HostUniversity.java | 10 +++++++- .../repository/HostUniversityRepository.java | 2 -- ...traint_to_host_university_english_name.sql | 2 +- .../AdminHostUniversityServiceTest.java | 25 +++++++++++-------- 5 files changed, 25 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/example/solidconnection/admin/university/service/AdminHostUniversityService.java b/src/main/java/com/example/solidconnection/admin/university/service/AdminHostUniversityService.java index 7f96f3c4e..416ba8fb8 100644 --- a/src/main/java/com/example/solidconnection/admin/university/service/AdminHostUniversityService.java +++ b/src/main/java/com/example/solidconnection/admin/university/service/AdminHostUniversityService.java @@ -67,7 +67,6 @@ public AdminHostUniversityDetailResponse getHostUniversity(Long id) { ) public AdminHostUniversityDetailResponse createHostUniversity(AdminHostUniversityCreateRequest request) { validateKoreanNameNotExists(request.koreanName()); - validateEnglishNameNotExists(request.englishName()); Country country = findCountryByCode(request.countryCode()); Region region = findRegionByCode(request.regionCode()); @@ -98,13 +97,6 @@ private void validateKoreanNameNotExists(String koreanName) { }); } - private void validateEnglishNameNotExists(String englishName) { - hostUniversityRepository.findByEnglishName(englishName) - .ifPresent(existingUniversity -> { - throw new CustomException(HOST_UNIVERSITY_ALREADY_EXISTS); - }); - } - @Transactional @DefaultCacheOut( key = {"univApplyInfoTextSearch", "university:recommend:general"}, @@ -116,7 +108,6 @@ public AdminHostUniversityDetailResponse updateHostUniversity(Long id, AdminHost .orElseThrow(() -> new CustomException(UNIVERSITY_NOT_FOUND)); validateKoreanNameNotDuplicated(request.koreanName(), id); - validateEnglishNameNotDuplicated(request.englishName(), id); Country country = findCountryByCode(request.countryCode()); Region region = findRegionByCode(request.regionCode()); @@ -149,15 +140,6 @@ private void validateKoreanNameNotDuplicated(String koreanName, Long excludeId) }); } - private void validateEnglishNameNotDuplicated(String englishName, Long excludeId) { - hostUniversityRepository.findByEnglishName(englishName) - .ifPresent(existingUniversity -> { - if (!existingUniversity.getId().equals(excludeId)) { - throw new CustomException(HOST_UNIVERSITY_ALREADY_EXISTS); - } - }); - } - private Country findCountryByCode(String countryCode) { return countryRepository.findByCode(countryCode) .orElseThrow(() -> new CustomException(COUNTRY_NOT_FOUND)); diff --git a/src/main/java/com/example/solidconnection/university/domain/HostUniversity.java b/src/main/java/com/example/solidconnection/university/domain/HostUniversity.java index c9d667ffe..d502ad14c 100644 --- a/src/main/java/com/example/solidconnection/university/domain/HostUniversity.java +++ b/src/main/java/com/example/solidconnection/university/domain/HostUniversity.java @@ -9,12 +9,20 @@ import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import jakarta.persistence.UniqueConstraint; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; @Entity +@Table(uniqueConstraints = { + @UniqueConstraint( + name = "uk_host_university_english_name_korean_name", + columnNames = {"english_name", "korean_name"} + ) +}) @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter @@ -28,7 +36,7 @@ public class HostUniversity extends BaseEntity { @Column(name = "korean_name", nullable = false, unique = true, length = 100) private String koreanName; - @Column(name = "english_name", nullable = false, unique = true, length = 200) + @Column(name = "english_name", nullable = false, length = 200) private String englishName; @Column(name = "format_name", nullable = false, length = 100) diff --git a/src/main/java/com/example/solidconnection/university/repository/HostUniversityRepository.java b/src/main/java/com/example/solidconnection/university/repository/HostUniversityRepository.java index 4264ed04d..3fa80629a 100644 --- a/src/main/java/com/example/solidconnection/university/repository/HostUniversityRepository.java +++ b/src/main/java/com/example/solidconnection/university/repository/HostUniversityRepository.java @@ -16,6 +16,4 @@ default HostUniversity getHostUniversityById(Long id) { } Optional findByKoreanName(String koreanName); - - Optional findByEnglishName(String englishName); } diff --git a/src/main/resources/db/migration/V52__add_unique_constraint_to_host_university_english_name.sql b/src/main/resources/db/migration/V52__add_unique_constraint_to_host_university_english_name.sql index 3dc3a5d66..bbb8f9b5c 100644 --- a/src/main/resources/db/migration/V52__add_unique_constraint_to_host_university_english_name.sql +++ b/src/main/resources/db/migration/V52__add_unique_constraint_to_host_university_english_name.sql @@ -1,2 +1,2 @@ ALTER TABLE host_university - ADD CONSTRAINT uk_host_university_english_name UNIQUE (english_name); + ADD CONSTRAINT uk_host_university_english_name_korean_name UNIQUE (english_name, korean_name); diff --git a/src/test/java/com/example/solidconnection/admin/service/AdminHostUniversityServiceTest.java b/src/test/java/com/example/solidconnection/admin/service/AdminHostUniversityServiceTest.java index a97303465..29a1ae163 100644 --- a/src/test/java/com/example/solidconnection/admin/service/AdminHostUniversityServiceTest.java +++ b/src/test/java/com/example/solidconnection/admin/service/AdminHostUniversityServiceTest.java @@ -258,7 +258,7 @@ class 생성 { } @Test - void 이미_존재하는_영문명으로_생성하면_예외_응답을_반환한다() { + void 이미_존재하는_영문명이어도_한글명이_다르면_생성한다() { // given HostUniversity existing = universityFixture.괌_대학(); Country country = countryFixture.미국(); @@ -276,10 +276,12 @@ class 생성 { region.getCode() ); - // when & then - assertThatCode(() -> adminHostUniversityService.createHostUniversity(request)) - .isInstanceOf(CustomException.class) - .hasMessage(ErrorCode.HOST_UNIVERSITY_ALREADY_EXISTS.getMessage()); + // when + AdminHostUniversityDetailResponse response = adminHostUniversityService.createHostUniversity(request); + + // then + assertThat(response.koreanName()).isEqualTo(request.koreanName()); + assertThat(response.englishName()).isEqualTo(existing.getEnglishName()); } } @@ -367,7 +369,7 @@ class 수정 { } @Test - void 다른_대학의_영문명으로_수정하면_예외_응답을_반환한다() { + void 다른_대학의_영문명이어도_한글명이_다르면_수정한다() { // given HostUniversity university1 = universityFixture.괌_대학(); HostUniversity university2 = universityFixture.메이지_대학(); @@ -384,10 +386,13 @@ class 수정 { university1.getRegion().getCode() ); - // when & then - assertThatCode(() -> adminHostUniversityService.updateHostUniversity(university1.getId(), request)) - .isInstanceOf(CustomException.class) - .hasMessage(ErrorCode.HOST_UNIVERSITY_ALREADY_EXISTS.getMessage()); + // when + AdminHostUniversityDetailResponse response = adminHostUniversityService.updateHostUniversity( + university1.getId(), request); + + // then + assertThat(response.koreanName()).isEqualTo(university1.getKoreanName()); + assertThat(response.englishName()).isEqualTo(university2.getEnglishName()); } @Test From ce3af6256544bca71f222b87f4dd07211892766d Mon Sep 17 00:00:00 2001 From: whqtker Date: Thu, 18 Jun 2026 16:42:06 +0900 Subject: [PATCH 2/2] =?UTF-8?q?refactor:=20=EB=B3=B5=ED=95=A9=20UK=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0,=20english=5Fname=20=EC=A4=91=EB=B3=B5=20?= =?UTF-8?q?=ED=97=88=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../solidconnection/university/domain/HostUniversity.java | 8 -------- ..._unique_constraint_to_host_university_english_name.sql | 2 -- ...sql => V52__extend_univ_apply_info_import_columns.sql} | 0 3 files changed, 10 deletions(-) delete mode 100644 src/main/resources/db/migration/V52__add_unique_constraint_to_host_university_english_name.sql rename src/main/resources/db/migration/{V53__extend_univ_apply_info_import_columns.sql => V52__extend_univ_apply_info_import_columns.sql} (100%) diff --git a/src/main/java/com/example/solidconnection/university/domain/HostUniversity.java b/src/main/java/com/example/solidconnection/university/domain/HostUniversity.java index d502ad14c..edab5c240 100644 --- a/src/main/java/com/example/solidconnection/university/domain/HostUniversity.java +++ b/src/main/java/com/example/solidconnection/university/domain/HostUniversity.java @@ -9,20 +9,12 @@ import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.ManyToOne; -import jakarta.persistence.Table; -import jakarta.persistence.UniqueConstraint; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; @Entity -@Table(uniqueConstraints = { - @UniqueConstraint( - name = "uk_host_university_english_name_korean_name", - columnNames = {"english_name", "korean_name"} - ) -}) @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter diff --git a/src/main/resources/db/migration/V52__add_unique_constraint_to_host_university_english_name.sql b/src/main/resources/db/migration/V52__add_unique_constraint_to_host_university_english_name.sql deleted file mode 100644 index bbb8f9b5c..000000000 --- a/src/main/resources/db/migration/V52__add_unique_constraint_to_host_university_english_name.sql +++ /dev/null @@ -1,2 +0,0 @@ -ALTER TABLE host_university - ADD CONSTRAINT uk_host_university_english_name_korean_name UNIQUE (english_name, korean_name); diff --git a/src/main/resources/db/migration/V53__extend_univ_apply_info_import_columns.sql b/src/main/resources/db/migration/V52__extend_univ_apply_info_import_columns.sql similarity index 100% rename from src/main/resources/db/migration/V53__extend_univ_apply_info_import_columns.sql rename to src/main/resources/db/migration/V52__extend_univ_apply_info_import_columns.sql