diff --git a/src/main/java/com/uspray/uspray/exception/ErrorStatus.java b/src/main/java/com/uspray/uspray/exception/ErrorStatus.java index 5c268734..896a462f 100644 --- a/src/main/java/com/uspray/uspray/exception/ErrorStatus.java +++ b/src/main/java/com/uspray/uspray/exception/ErrorStatus.java @@ -17,6 +17,7 @@ public enum ErrorStatus { INVALID_TOKEN_INFO_EXCEPTION(HttpStatus.BAD_REQUEST, "토큰 혹은 만료시간 설정이 잘못되었습니다."), SENDER_RECEIVER_SAME_EXCEPTION(HttpStatus.BAD_REQUEST, "자신에게는 기도제목을 공유할 수 없습니다."), CATEGORY_ALREADY_EXIST_EXCEPTION(HttpStatus.BAD_REQUEST, "이미 존재하는 카테고리입니다."), + CATEGORY_LIMIT_EXCEPTION(HttpStatus.BAD_REQUEST, "카테고리는 최대 7개까지 생성 가능합니다."), /* * 401 UNAUTHORIZED diff --git a/src/main/java/com/uspray/uspray/infrastructure/CategoryRepository.java b/src/main/java/com/uspray/uspray/infrastructure/CategoryRepository.java index 7578e3e5..e7d8245f 100644 --- a/src/main/java/com/uspray/uspray/infrastructure/CategoryRepository.java +++ b/src/main/java/com/uspray/uspray/infrastructure/CategoryRepository.java @@ -11,4 +11,6 @@ public interface CategoryRepository extends JpaRepository { Category getCategoryById(Long categoryId); boolean existsCategoryByNameAndMember(String name, Member member); + + int countCategoryByMember(Member member); } diff --git a/src/main/java/com/uspray/uspray/service/CategoryService.java b/src/main/java/com/uspray/uspray/service/CategoryService.java index bc74d245..dc75156c 100644 --- a/src/main/java/com/uspray/uspray/service/CategoryService.java +++ b/src/main/java/com/uspray/uspray/service/CategoryService.java @@ -25,6 +25,10 @@ public CategoryResponseDto createCategory(String username, throw new NotFoundException(ErrorStatus.CATEGORY_ALREADY_EXIST_EXCEPTION, ErrorStatus.CATEGORY_ALREADY_EXIST_EXCEPTION.getMessage()); } + if (categoryRepository.countCategoryByMember(member) > 7) { + throw new NotFoundException(ErrorStatus.CATEGORY_LIMIT_EXCEPTION, + ErrorStatus.CATEGORY_LIMIT_EXCEPTION.getMessage()); + } Category category = categoryRequestDto.toEntity(member); categoryRepository.save(category); return CategoryResponseDto.of(category);