Skip to content

Commit

Permalink
fix: 카테고리 수정 문제 해결
Browse files Browse the repository at this point in the history
- parentId없이 name, slug를 수정 하면 발생하는 문제 해결
- artwork, slug가 null일때 발생하는 문제 해결
- parentId로 자기자신을 호출할때 발생하는 문제 해결
  • Loading branch information
haroya01 committed May 8, 2024
1 parent 47b58cf commit 8011c4a
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,8 @@ public interface MagazineCategoryRepository extends JpaRepository<MagazineCatego
boolean existsBySlug(String slug);

Optional<MagazineCategory> findBySlug(String slug);

boolean existsByNameAndParentAndIdNot(String name, MagazineCategory parent, Long idNot);

boolean existsBySlugAndIdNot(String slug, Long idNot);
}
Original file line number Diff line number Diff line change
Expand Up @@ -92,24 +92,29 @@ public MagazineCategoryResponse.Get updateCategory(Long categoryId, MagazineCate

if (parentCategory != null) {
parentCategory.checkDepth();

if (parentCategory.equals(category)) {
throw new RuntimeException("부모 카테고리로 자기 자신을 참조할 수 없습니다.");
}

}

checkCategoryExists(request, parentCategory);
checkCategoryExists(request, category, parentCategory);
category.changeParentCategory(parentCategory);

category.update(request);
magazineCategoryRepository.save(category);
return MagazineCategoryResponse.Get.from(category);
}

private void checkCategoryExists(MagazineCategoryRequest.Update request, MagazineCategory parentCategory) {
boolean exists = magazineCategoryRepository.existsByNameAndParent(request.getName(), parentCategory);
private void checkCategoryExists(MagazineCategoryRequest.Update request, MagazineCategory category, MagazineCategory parentCategory) {
boolean exists = magazineCategoryRepository.existsByNameAndParentAndIdNot(request.getName(), parentCategory, category.getId());
if (exists) {
throw new RuntimeException("해당 부모 카테고리 산하 이름이 같은 카테고리가 존재합니다.");
throw new RuntimeException("해당 부모 카테고리 산하에 같은 이름을 가진 다른 카테고리가 존재합니다.");
}
boolean existsSlug = magazineCategoryRepository.existsBySlug(request.getSlug());
boolean existsSlug = magazineCategoryRepository.existsBySlugAndIdNot(request.getSlug(), category.getId());
if (existsSlug) {
throw new RuntimeException("슬러그가 중복되는 카테고리가 존재합니다.");
throw new RuntimeException("슬러그가 중복되는 다른 카테고리가 존재합니다.");
}
}
}

0 comments on commit 8011c4a

Please sign in to comment.