diff --git a/src/main/java/com/t3t/bookstoreapi/publisher/controller/PublisherController.java b/src/main/java/com/t3t/bookstoreapi/publisher/controller/PublisherController.java index bb75b585..4f2e6706 100644 --- a/src/main/java/com/t3t/bookstoreapi/publisher/controller/PublisherController.java +++ b/src/main/java/com/t3t/bookstoreapi/publisher/controller/PublisherController.java @@ -15,11 +15,22 @@ import javax.validation.Valid; +/** + * 출판사 상세 내역을 관리하는 controller + * 출판사 생성, 조회, 수정, 삭제 API 제공 + */ @RestController @RequiredArgsConstructor public class PublisherController { private final PublisherService publisherService; + /** + * 모든 출판사 목록을 조회 + * @return 등록된 모든 출판사 리스트를 반환 + * 출판사가 없을 경우 204 No Content 상태와 메시지를 반환 + * + * @author hydrationn(박수화) + */ @GetMapping("/publishers") public ResponseEntity>> getPublisherList( @RequestParam(value = "pageNo", defaultValue = "0", required = false) int pageNo, @@ -35,24 +46,54 @@ public ResponseEntity>> getPublisherList ResponseEntity.ok(new BaseResponse>().data(publisherList)); } + /** + * 특정 출판사의 상세 정보 조회 + * @param publisherId 조회할 출판사 ID + * @return 조회된 출판사의 상세 정보를 반환 + * + * @author hydrationn(박수화) + */ @GetMapping("/publishers/{publisherId}") public ResponseEntity> getPublisherById(@PathVariable Long publisherId) { return ResponseEntity.ok(new BaseResponse() .data(publisherService.getPublisherById(publisherId))); } + /** + * 새로운 출판사 생성 + * @param publisherId 생성할 출판사의 ID + * @param request 출판사 생성 요청 정보 + * @return 생성된 출판사의 정보를 반환 + * + * @author hydrationn(박수화) + */ @PostMapping("/publishers/{publisherId}") public ResponseEntity> createPublisher(@PathVariable("publisherId") Long publisherId, @Valid @RequestBody PublisherCreationRequest request) { return ResponseEntity.status(HttpStatus.CREATED).build(); } + /** + * 특정 출판사의 정보 업데이트 + * @param publisherId 업데이트할 출판사의 ID + * @param publisherName 수정될 출판사 이름 + * @param publisherEmail 수정될 출판사 이메일 + * + * @return 업데이트된 출판사 정보 반환 + */ @PutMapping(value = "/publishers/{publisherId}") public ResponseEntity> updatePublisher(@PathVariable Long publisherId, @RequestParam String publisherName, @RequestParam String publisherEmail) { return ResponseEntity.ok(new BaseResponse() .data(publisherService.updatePublisher(publisherId, publisherName, publisherEmail))); } + /** + * 특정 출판사 삭제 + * @param publisherId 삭제할 출판사의 ID + * @return 삭제 작업이 성공했음을 나타내는 ResponseEntity 반환 + * + * @author hydrationn(박수화) + */ @DeleteMapping("/publishers/{publisherId}") public ResponseEntity> deletePublisher(@PathVariable("publishers") Long publisherId) { publisherService.deletePublisher(publisherId); diff --git a/src/main/java/com/t3t/bookstoreapi/publisher/exception/PublisherNotFoundException.java b/src/main/java/com/t3t/bookstoreapi/publisher/exception/PublisherNotFoundException.java index 6691d064..7dad978b 100644 --- a/src/main/java/com/t3t/bookstoreapi/publisher/exception/PublisherNotFoundException.java +++ b/src/main/java/com/t3t/bookstoreapi/publisher/exception/PublisherNotFoundException.java @@ -1,5 +1,9 @@ package com.t3t.bookstoreapi.publisher.exception; +/** + * 존재하지 않는 출판사(Publisher)에 대해 조회를 시도하는 경우 발생하는 예외 + * @author hydrationn(박수화) + */ public class PublisherNotFoundException extends RuntimeException{ private static final String DEFAULT_MESSAGE = "존재하지 않는 출판사입니다."; diff --git a/src/main/java/com/t3t/bookstoreapi/publisher/model/dto/PublisherDto.java b/src/main/java/com/t3t/bookstoreapi/publisher/model/dto/PublisherDto.java index f41d66ef..9c5c7377 100644 --- a/src/main/java/com/t3t/bookstoreapi/publisher/model/dto/PublisherDto.java +++ b/src/main/java/com/t3t/bookstoreapi/publisher/model/dto/PublisherDto.java @@ -7,6 +7,12 @@ import javax.validation.constraints.NotNull; +/** + * 출판사 상세 정보를 전송하는 데 사용되는 Data Transfer Object(DTO) + * 출판사 + * + * @author hydrationn(박수화) + */ @Data @Getter @Builder diff --git a/src/main/java/com/t3t/bookstoreapi/publisher/model/entity/Publisher.java b/src/main/java/com/t3t/bookstoreapi/publisher/model/entity/Publisher.java index 82183b32..4a435b65 100644 --- a/src/main/java/com/t3t/bookstoreapi/publisher/model/entity/Publisher.java +++ b/src/main/java/com/t3t/bookstoreapi/publisher/model/entity/Publisher.java @@ -5,6 +5,11 @@ import javax.persistence.*; +/** + * 출판사 내역을 관리하는 Entity class + * + * @Author hydrationn(박수화) + */ @NoArgsConstructor @AllArgsConstructor @Builder diff --git a/src/main/java/com/t3t/bookstoreapi/publisher/model/request/PublisherCreationRequest.java b/src/main/java/com/t3t/bookstoreapi/publisher/model/request/PublisherCreationRequest.java index 6d0bc7a2..8bfa1d09 100644 --- a/src/main/java/com/t3t/bookstoreapi/publisher/model/request/PublisherCreationRequest.java +++ b/src/main/java/com/t3t/bookstoreapi/publisher/model/request/PublisherCreationRequest.java @@ -7,6 +7,12 @@ import javax.validation.constraints.NotNull; +/** + * 출판사 상세 정보 생성을 위한 요청 데이터 모델 + * 관리자가 출판사 상세 정보를 생성할 때 필요한 정보를 전달하는 데 사용 + * + * @author hydrationn(박수화) + */ @Builder @NoArgsConstructor @AllArgsConstructor diff --git a/src/main/java/com/t3t/bookstoreapi/publisher/service/PublisherService.java b/src/main/java/com/t3t/bookstoreapi/publisher/service/PublisherService.java index 8023a7d1..ef8c1f41 100644 --- a/src/main/java/com/t3t/bookstoreapi/publisher/service/PublisherService.java +++ b/src/main/java/com/t3t/bookstoreapi/publisher/service/PublisherService.java @@ -15,6 +15,10 @@ import java.util.List; import java.util.stream.Collectors; +/** + * 출판사 서비스를 제공하는 클래스 + * 출판사 생성, 조회, 수정, 삭제 API 제공 + */ @Service @Transactional @RequiredArgsConstructor @@ -22,6 +26,12 @@ public class PublisherService { private final PublisherRepository publisherRepository; + /** + * 모든 출판사의 목록 조회 + * @return 출판사 정보가 담긴 {@link PublisherDto}의 리스트를 반환 + * + * @author hydrationn(박수화) + */ @Transactional(readOnly = true) public PageResponse getPublisherList(Pageable pageable) { @@ -42,12 +52,28 @@ public PageResponse getPublisherList(Pageable pageable) { .build(); } + /** + * 특정 출판사의 정보 조회 + * @param publisherId 조회할 출판사의 ID + * @return 해당 출판사의 정보가 담긴 {@link PublisherDto} 반환 + * @throws PublisherNotFoundException 주어진 ID의 출판사를 찾을 수 없을 때 발생 + * + * @author hydrationn(박수화) + */ @Transactional(readOnly = true) public PublisherDto getPublisherById(Long publisherId) { return PublisherDto.of(publisherRepository.findById(publisherId) .orElseThrow(() -> new PublisherNotFoundException())); } + /** + * 새로운 출판사 생성 + * @param publisherId 생성할 출판사 ID + * @param request 출판사 생성을 위한 요청 정보가 담긴 {@link PublisherCreationRequest} 객체 + * @return 생성된 출판사의 정보가 담긴 {@link PublisherDto}를 반환 + * + * @author hydrationn(박수화) + */ public PublisherDto createPublisher(Long publisherId, PublisherCreationRequest request) { Publisher newPublisher = Publisher.builder() .publisherId(publisherId) @@ -57,6 +83,16 @@ public PublisherDto createPublisher(Long publisherId, PublisherCreationRequest r return PublisherDto.of(publisherRepository.save(newPublisher)); } + /** + * 주어진 ID의 출판사 정보를 업데이트 + * @param publisherId 업데이트할 출판사의 ID + * @param publisherName 새로운 출판사 이름 + * @param publisherEmail 새로운 출판사 이메일 + * @return 업데이트된 출판사의 정보가 담긴 {@link PublisherDto} 반환 + * @throws PublisherNotFoundException 주어진 ID의 출판사를 찾을 수 없을 때 발생 + * + * @author hydrationn(박수화) + */ public PublisherDto updatePublisher(Long publisherId, String publisherName, String publisherEmail) { Publisher publisher = publisherRepository.findById(publisherId) .orElseThrow(() -> new PublisherNotFoundException(publisherId)); @@ -67,6 +103,13 @@ public PublisherDto updatePublisher(Long publisherId, String publisherName, Stri return PublisherDto.of(publisher); } + /** + * 특정 출판사 삭제 + * @param publisherId 삭제할 출판사의 ID + * @throws PublisherNotFoundException 특정 출판사를 찾을 수 없을 때 발생 + * + * @author hydrationn(박수화) + */ public void deletePublisher(Long publisherId) { publisherRepository.delete(publisherRepository.findById(publisherId) .orElseThrow(() -> new PublisherNotFoundException(publisherId)));