[ 작업한 내용 ]
▶ 도서 대출 전체 목록 조회 기능 추가
1. messages.properties
- 도서 대출 목록 조회 기능 관련 메시지 추가.
success.loan.list_fetched=도서 대출 목록이 성공적으로 조회되었습니다.
2. LoanSucessCode
- 도서 대출 목록 조회 기능 관련 성공 코드 추가.
LOAN_LIST_FETCHED(HttpStatus.OK, "LOAN_205", "success.loan.list_fetched");
3. AdminLoanListResDTO
- 도서 대출 전체 내역을 응답하기 위한 DTO이다.
- id, user, book, loanDate, dueDate, returnDate, extended, status 필드를 가진다.
- 도서 대출 전체 내역을 볼 수 있어야 한다.
- Loan 엔티티를 파라미터로 받아, DTO 필드를 초기화하는 생성자 작성.
4. AdminLoanController
- GET /api/v1/admin/loans HTTP 요청을 처리하며, status, page, size 파라미터를 @RequestParam으로 받는다.
- 전달받은 파라미터로 Service 계층에 요청하여 대출 내역 목록을 조회하고, 결과를 Page<AdminLoanListResDTO>타입으로 받아 처리한다.
- 조회된 결과와 함께 성공 메시지를 ApiResponse 형태로 감싸어 클라이언트에 반환한다.
5. AdminLoanService
- page와 size 파라미터로 Pageable 객체를 생성하여 페이징 정보를 준비한다.
- status 값이 있을 경우, 해당 상태에 맞는 데이터를 loanRepository.findByStatus()를 통해 조회하고, 없을 경우 전체 데이터를 findAll()로 조회한다.
- 조회된 결과가 비어 있으면 LoanErrorCode.LOAN_NOT_FOUND 예외를 발생시킨다.
- 조회된 Page<Lone> 데이터를 AdminLoanListResDTO 리스트로 변환한다.
- 최종적으로, 변환된 리스트를 PageImpl로 감싸 Page<AdminLoanListResDTO> 형태로 Controller에 반환한다.
6. LoanRepository
- Spring Data JPA의 메서드 네이밍 규칙을 활용해, LoanStatus값과 Pageable을 기준으로 대출 상태별 목록을 조회하는 findByStatus() 메서드를 정의한다.
- 반환 타입은 Page<Loan>이며, 페이징 처리가 가능하다.