Skip to content

Commit

Permalink
Merge pull request #171 from nhnacademy-be5-T3Team/feature/publishers
Browse files Browse the repository at this point in the history
docs: #72 출판사 JavaDoc 작성
  • Loading branch information
Yujin-nKim authored May 13, 2024
2 parents c593606 + 1af8dfd commit 4699252
Show file tree
Hide file tree
Showing 6 changed files with 105 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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<BaseResponse<PageResponse<PublisherDto>>> getPublisherList(
@RequestParam(value = "pageNo", defaultValue = "0", required = false) int pageNo,
Expand All @@ -35,24 +46,54 @@ public ResponseEntity<BaseResponse<PageResponse<PublisherDto>>> getPublisherList
ResponseEntity.ok(new BaseResponse<PageResponse<PublisherDto>>().data(publisherList));
}

/**
* 특정 출판사의 상세 정보 조회
* @param publisherId 조회할 출판사 ID
* @return 조회된 출판사의 상세 정보를 반환
*
* @author hydrationn(박수화)
*/
@GetMapping("/publishers/{publisherId}")
public ResponseEntity<BaseResponse<PublisherDto>> getPublisherById(@PathVariable Long publisherId) {
return ResponseEntity.ok(new BaseResponse<PublisherDto>()
.data(publisherService.getPublisherById(publisherId)));
}

/**
* 새로운 출판사 생성
* @param publisherId 생성할 출판사의 ID
* @param request 출판사 생성 요청 정보
* @return 생성된 출판사의 정보를 반환
*
* @author hydrationn(박수화)
*/
@PostMapping("/publishers/{publisherId}")
public ResponseEntity<BaseResponse<PublisherDto>> 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<BaseResponse<PublisherDto>> updatePublisher(@PathVariable Long publisherId, @RequestParam String publisherName, @RequestParam String publisherEmail) {
return ResponseEntity.ok(new BaseResponse<PublisherDto>()
.data(publisherService.updatePublisher(publisherId, publisherName, publisherEmail)));
}

/**
* 특정 출판사 삭제
* @param publisherId 삭제할 출판사의 ID
* @return 삭제 작업이 성공했음을 나타내는 ResponseEntity 반환
*
* @author hydrationn(박수화)
*/
@DeleteMapping("/publishers/{publisherId}")
public ResponseEntity<BaseResponse<Void>> deletePublisher(@PathVariable("publishers") Long publisherId) {
publisherService.deletePublisher(publisherId);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package com.t3t.bookstoreapi.publisher.exception;

/**
* 존재하지 않는 출판사(Publisher)에 대해 조회를 시도하는 경우 발생하는 예외
* @author hydrationn(박수화)
*/
public class PublisherNotFoundException extends RuntimeException{
private static final String DEFAULT_MESSAGE = "존재하지 않는 출판사입니다.";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@

import javax.validation.constraints.NotNull;

/**
* 출판사 상세 정보를 전송하는 데 사용되는 Data Transfer Object(DTO)
* 출판사
*
* @author hydrationn(박수화)
*/
@Data
@Getter
@Builder
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@

import javax.persistence.*;

/**
* 출판사 내역을 관리하는 Entity class
*
* @Author hydrationn(박수화)
*/
@NoArgsConstructor
@AllArgsConstructor
@Builder
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@

import javax.validation.constraints.NotNull;

/**
* 출판사 상세 정보 생성을 위한 요청 데이터 모델
* 관리자가 출판사 상세 정보를 생성할 때 필요한 정보를 전달하는 데 사용
*
* @author hydrationn(박수화)
*/
@Builder
@NoArgsConstructor
@AllArgsConstructor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,23 @@
import java.util.List;
import java.util.stream.Collectors;

/**
* 출판사 서비스를 제공하는 클래스
* 출판사 생성, 조회, 수정, 삭제 API 제공
*/
@Service
@Transactional
@RequiredArgsConstructor
public class PublisherService {

private final PublisherRepository publisherRepository;

/**
* 모든 출판사의 목록 조회
* @return 출판사 정보가 담긴 {@link PublisherDto}의 리스트를 반환
*
* @author hydrationn(박수화)
*/
@Transactional(readOnly = true)
public PageResponse<PublisherDto> getPublisherList(Pageable pageable) {

Expand All @@ -42,12 +52,28 @@ public PageResponse<PublisherDto> 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)
Expand All @@ -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));
Expand All @@ -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)));
Expand Down

0 comments on commit 4699252

Please sign in to comment.