💥 현재 페이지 리스트 데이터만 클라이언트에 리턴하는 것에서
더하여 총 포스트 숫자 , 전체 페이지 숫자, 현재 페이지가 마지막인지?
이런 정보를 더해서 한꺼번에 클라이언트에 제공하도록 하자.
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PostResponse {
private List<PostDto> content; //포스트 리스트
private int pageNo; //페이지넘버
private int pageSize; //페이지당 포스트 수
private long totalElements; //총 포스트 수
private int totalPages; //총 페이지 수
private boolean last; //마지막 페이지면 true
}
//모든 포스트들을 가져오기 (페이지네이션)
PostResponse getAllPosts(int pageNo, int pageSize);
@Override
public PostResponse getAllPosts(int pageNo, int pageSize) {
//Pageable 객체 생성
Pageable pageable = PageRequest.of(pageNo, pageSize);
//pageable 을 입력해 원하는 페이지의 사이즈만큼 리스트 리턴
Page<Post> posts = postRepository.findAll(pageable);
//페이지객체 안의 리스트만 가져오기
List<Post> pagePosts = posts.getContent();
//DTO로 변환하여 리턴
List<PostDto> content = pagePosts.stream().map(post -> mapToDto(post)).collect(Collectors.toList());
PostResponse postResponse = new PostResponse();
postResponse.setContent(content);
postResponse.setPageNo(pageNo);
postResponse.setPageSize(pageSize);
postResponse.setTotalElements(posts.getTotalElements());
postResponse.setTotalPages(posts.getTotalPages());
postResponse.setLast(posts.isLast());
return postResponse;
}