Skip to content

Commit 6cef13a

Browse files
authored
Merge pull request #270 from prgrms-web-devcourse-final-project/feat/22-post
Fix[post] : 내 게시물 조회하기 롤백
2 parents bc57b5e + e189d1f commit 6cef13a

File tree

5 files changed

+25
-8
lines changed

5 files changed

+25
-8
lines changed

backend/src/main/java/com/ai/lawyer/domain/post/controller/PostController.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,13 +131,21 @@ public ResponseEntity<ApiResponse<PostDto>> getMyPostById(@PathVariable Long pos
131131

132132
@Operation(summary = "본인 게시글 전체 조회")
133133
@GetMapping("/my")
134+
public ResponseEntity<ApiResponse<List<PostDto>>> getMyPosts() {
135+
Long memberId = AuthUtil.getAuthenticatedMemberId();
136+
List<PostDto> posts = postService.getMyPosts(memberId);
137+
return ResponseEntity.ok(new ApiResponse<>(200, "본인 게시글 전체 조회 성공", posts));
138+
}
139+
140+
@Operation(summary = "본인 게시글 전체 패이징 조회")
141+
@GetMapping("/mypaged")
134142
public ResponseEntity<ApiResponse<Page<PostDto>>> getMyPosts(
135143
@RequestParam(defaultValue = "0") int page,
136144
@RequestParam(defaultValue = "10") int size
137145
) {
138146
Pageable pageable = PageRequest.of(page, size, org.springframework.data.domain.Sort.by("updatedAt").descending());
139147
Long memberId = AuthUtil.getAuthenticatedMemberId();
140-
Page<PostDto> response = postService.getMyPosts(pageable, memberId);
148+
Page<PostDto> response = postService.getMyPostspaged(pageable, memberId);
141149
return ResponseEntity.ok(new ApiResponse<>(200, "본인 게시글 전체 조회 성공", response));
142150
}
143151

backend/src/main/java/com/ai/lawyer/domain/post/service/PostService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ public interface PostService {
3030

3131
// ===== 본인 게시글 관련 =====
3232
PostDto getMyPostById(Long postId, Long requesterMemberId);
33-
Page<PostDto> getMyPosts(Pageable pageable, Long requesterMemberId);
33+
List<PostDto> getMyPosts(Long requesterMemberId);
34+
Page<PostDto> getMyPostspaged(Pageable pageable, Long requesterMemberId);
3435

3536
// ===== 페이징 관련 =====
3637
Page<PostDto> getPostsPaged(Pageable pageable, Long memberId);

backend/src/main/java/com/ai/lawyer/domain/post/service/PostServiceImpl.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,6 @@ public PostDto updatePost(Long postId, PostUpdateDto postUpdateDto) {
142142
public void deletePost(Long postId) {
143143
Post post = postRepository.findById(postId)
144144
.orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, "삭제할 게시글을 찾을 수 없습니다."));
145-
// Poll도 명시적으로 삭제 (JPA cascade/orphanRemoval이 있으면 생략 가능)
146145
postRepository.delete(post);
147146
}
148147

@@ -165,8 +164,17 @@ public PostDto getMyPostById(Long postId, Long requesterMemberId) {
165164
return convertToDto(post, requesterMemberId);
166165
}
167166

167+
public List<PostDto> getMyPosts(Long requesterMemberId) {
168+
Member member = AuthUtil.getMemberOrThrow(requesterMemberId);
169+
List<Post> posts = postRepository.findByMember(member);
170+
return posts.stream()
171+
.sorted(Comparator.comparing(Post::getUpdatedAt, Comparator.nullsLast(Comparator.naturalOrder())).reversed())
172+
.map(post -> convertToDto(post, requesterMemberId))
173+
.collect(Collectors.toList());
174+
}
175+
168176
@Override
169-
public Page<PostDto> getMyPosts(Pageable pageable, Long requesterMemberId) {
177+
public Page<PostDto> getMyPostspaged(Pageable pageable, Long requesterMemberId) {
170178
Member member = AuthUtil.getMemberOrThrow(requesterMemberId);
171179
Page<Post> posts = postRepository.findByMember(member, pageable);
172180
return posts.map(post -> convertToDto(post, requesterMemberId));

backend/src/test/java/com/ai/lawyer/domain/post/controller/PostControllerTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -219,8 +219,8 @@ void t10_paged() throws Exception {
219219
com.ai.lawyer.domain.post.dto.PostDto.builder().postId(1L).postName("테스트 제목").build()
220220
);
221221
org.springframework.data.domain.PageImpl<com.ai.lawyer.domain.post.dto.PostDto> page = new org.springframework.data.domain.PageImpl<>(posts, pageable, 1);
222-
Mockito.when(postService.getMyPosts(Mockito.any(), Mockito.anyLong())).thenReturn(page);
223-
mockMvc.perform(get("/api/posts/my")
222+
Mockito.when(postService.getMyPostspaged(Mockito.any(), Mockito.anyLong())).thenReturn(page);
223+
mockMvc.perform(get("/api/posts/mypaged")
224224
.param("page", "0")
225225
.param("size", "10")
226226
.cookie(new Cookie("accessToken", "valid-access-token")))

backend/src/test/java/com/ai/lawyer/domain/post/service/PostServiceTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,8 @@ void t10_paged() {
116116
java.util.List<PostDto> postList = java.util.List.of(new PostDto());
117117
org.springframework.data.domain.Pageable pageable = org.springframework.data.domain.PageRequest.of(0, 10);
118118
org.springframework.data.domain.PageImpl<PostDto> page = new org.springframework.data.domain.PageImpl<>(postList, pageable, 1);
119-
Mockito.when(postService.getMyPosts(Mockito.eq(pageable), Mockito.eq(1L))).thenReturn(page);
120-
var result = postService.getMyPosts(pageable, 1L);
119+
Mockito.when(postService.getMyPostspaged(Mockito.eq(pageable), Mockito.eq(1L))).thenReturn(page);
120+
var result = postService.getMyPostspaged(pageable, 1L);
121121
assertThat(result.getContent()).hasSize(1);
122122
assertThat(result.getTotalElements()).isEqualTo(1);
123123
assertThat(result.getTotalPages()).isEqualTo(1);

0 commit comments

Comments
 (0)