[ 작업한 내용 ]
1. 사용자 도서 상세 조회
1-1) UserBookDetailResDTO
- 사용자가 도서 상세보기를 요청했을 때 응답받을 데이터.
- id, title, isbn, author, publisher, publishedDate, status, location, description 필드를 가짐.
1-2) UserBookController
- GET 방식으로 {bookId}를 @PathVariable로 도서의 상세 데이터를 요청한다.
- 서비스로직으로 bookId를 전달하여 도서 상세 데이터를 UserBookDetailResDTO 타입의 responseDTO에 저장.
- 클라이언트에게 bookId로 DB에서 조회하여 가져온 데이터를 반환해준다.
1-3) UserBookService
- 레포지터에 .findById() 메서드를 사용하여 bookId로 DB에서 데이터를 조회한 뒤 Book타입의 book 변수에 데이터 저장하고, 데이터가 없으면 커스텀한 BOOK_NOT_FOUND 예외를 발생.
- 데이터를 성공적으로 가져오면 가져온 book 데이터를 UserBookDetailResDTO 객체로 새로 생성하여 controller 계층으로 반환.
2. 사용자 타입별 키워드 검색
2-1) UserBookSearchResDTO
- 사용자가 타입별 키워드 검색을 요청했을 때 응답받을 데이터.
- id, title, isbn, author, publisher, publishedDate, status, location 필드를 가짐
2-2) UserBookController
- GET 방식으로 /api/v1/books/search 로 RequestParam형태로 type, keyword, page, size 로 데이터를 요청한다.
- 서비스로직으로 type, keyword, page, size를 전달하여 해당 타입으로 키워드가 있는 데이터를 찾아서 페이징으로 데이터를 받는다. 반환 받은 데이터 Page<UserBookSearchResDTO> 타입의 responseDTO 변수에 저장.
- 데이터를 성공적으로 가져오면 가져온 데이터 responseDTO를 반환.
2-3) UserBookService
- controller로 전달받은 데이터를 Pageable을 사용하여 페이징 준비를 한다.
- 타입이 잘못 전달되었을 경우를 대비하여 try-catch문을 사용하여 타입 예외처리를 해준다.
- 결과 담을 변수를 Page<Book> 타입으로 result 변수를 생성.
- switch문을 사용하여 type에 따라 ALL, TITLE, AUTHOR 해당하는 case를 실행한다.
- 각 case에는 레포지토리로 keyword와 pageable을 전달하여 DB에서 가져온 데이터를 result에 저장한다.
- result가 비어있는 경우를 대비하여 예외처리를 해준다.
- 가져온 데이터는 List 타입으로 형변환 시켜준 뒤 반환할 때에는 Page 형태로 변환하여 반환.
3. 사용자 전체목록조회 기능 수정
- UserBookListResDTO에서 status 필드 추가. (도서 상태)\
'개발 기록 > 도서관 관리 시스템' 카테고리의 다른 글
[Library Management System] 25.09.02 (35일) (0) | 2025.09.02 |
---|---|
[Library Management System] 25.09.01 (34일) (0) | 2025.09.01 |
[Library Management System] 25.08.30 (32일) (0) | 2025.08.31 |
[Library Management System] 25.08.29 (31일) (0) | 2025.08.29 |
[Library Management System] 25.08.28 (30일) (0) | 2025.08.28 |