다중 게시판의 목록 및 조회 기능을 구현한 것을 작성
게시판 종류 구분 컬럼(kind)을 기준으로 최신순으로 조회가 가능할 수 있도록 하였으며, 페이징은 추후 구현할 예정.
@Operation(summary = "게시글 목록 조회", description = "게시글 목록 조회 메서드")
@GetMapping("/lists/{kind}") // 게시글 목록 조회
public ResponseEntity<List<PostResponseDto>> list(@PathVariable @Min(1) @Max(3) Integer kind) {
List<PostResponseDto> postResponseDto = postService.getPostLists(kind);
return new ResponseEntity<>(postResponseDto, HttpStatus.OK);
}
@Transactional(readOnly = true)
...
// 게시글 목록 조회
public List<PostResponseDto> getPostLists(Integer kind) {
// 스트림 변환 후 리스트 객체로 반환
return postRepository.findAllKindDesc(kind).stream()
.map(PostResponseDto::new)
.collect(Collectors.toList());
}
// 게시판 종류(kind)를 파라미터로 받아 해당 게시판의 내용물을 최신순으로 가져오기
@Query("select post from Post post where post.kind = :kind order by post.createdAt desc")
List<Post> findAllKindDesc(@Param("kind") Integer kind);
게시판을 클릭 시 세부 내용을 조회할 수 있도록 구현.
@Operation(summary = "게시글 상세 내용 조회", description = "게시글 상세 내용 조회 메서드")
@GetMapping("/{id}") // 게시글 상세 내용 조회
public ResponseEntity<PostResponseDto> detail(@PathVariable Long id) {
PostResponseDto postResponseDto = postService.getPostDetail(id);
return new ResponseEntity<>(postResponseDto, HttpStatus.OK);
}
@Transactional(readOnly = true)
...
// 게시글 내용 불러오기
public PostResponseDto getPostDetail(Long id) {
Post post = postRepository.findById(id).orElseThrow(() -> new IllegalArgumentException("Post is not Existing"));
return new PostResponseDto(post);
}