From 1af8dfda8fb924c94a0f908985c83bf9df728873 Mon Sep 17 00:00:00 2001 From: hydrationn Date: Mon, 13 May 2024 12:57:32 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20#72=20=EC=B6=9C=ED=8C=90=EC=82=AC=20Jav?= =?UTF-8?q?aDoc=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PublisherController.java | 41 ++++++++++++++++++ .../exception/PublisherNotFoundException.java | 4 ++ .../publisher/model/dto/PublisherDto.java | 6 +++ .../publisher/model/entity/Publisher.java | 5 +++ .../request/PublisherCreationRequest.java | 6 +++ .../publisher/service/PublisherService.java | 43 +++++++++++++++++++ 6 files changed, 105 insertions(+) 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 d87407ab..85f1ef43 100644 --- a/src/main/java/com/t3t/bookstoreapi/publisher/controller/PublisherController.java +++ b/src/main/java/com/t3t/bookstoreapi/publisher/controller/PublisherController.java @@ -13,11 +13,22 @@ import javax.validation.Valid; import java.util.List; +/** + * 출판사 상세 내역을 관리하는 controller + * 출판사 생성, 조회, 수정, 삭제 API 제공 + */ @RestController @RequiredArgsConstructor public class PublisherController { private final PublisherService publisherService; + /** + * 모든 출판사 목록을 조회 + * @return 등록된 모든 출판사 리스트를 반환 + * 출판사가 없을 경우 204 No Content 상태와 메시지를 반환 + * + * @author hydrationn(박수화) + */ @GetMapping("/publishers") public ResponseEntity>> getPulisherList() { List publisherList = publisherService.getPublisherList(); @@ -27,24 +38,54 @@ public ResponseEntity>> getPulisherList() { 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 c38f0211..6a13d834 100644 --- a/src/main/java/com/t3t/bookstoreapi/publisher/service/PublisherService.java +++ b/src/main/java/com/t3t/bookstoreapi/publisher/service/PublisherService.java @@ -12,6 +12,10 @@ import java.util.List; import java.util.stream.Collectors; +/** + * 출판사 서비스를 제공하는 클래스 + * 출판사 생성, 조회, 수정, 삭제 API 제공 + */ @Service @Transactional @RequiredArgsConstructor @@ -19,17 +23,39 @@ public class PublisherService { private final PublisherRepository publisherRepository; + /** + * 모든 출판사의 목록 조회 + * @return 출판사 정보가 담긴 {@link PublisherDto}의 리스트를 반환 + * + * @author hydrationn(박수화) + */ @Transactional(readOnly = true) public List getPublisherList() { return publisherRepository.findAll().stream().map(PublisherDto::of).collect(Collectors.toList()); } + /** + * 특정 출판사의 정보 조회 + * @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) @@ -39,6 +65,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)); @@ -49,6 +85,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)));