From 355430ff8773d56912c50d4c7a8686547ccbf3be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=ED=83=9C=ED=98=84?= Date: Sat, 11 Nov 2023 18:42:11 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=B9=B4=ED=8E=98=20mapId=20=EC=97=90?= =?UTF-8?q?=20=EB=94=B0=EB=A5=B8=20=ED=8E=98=EC=9D=B4=EC=A7=80=EB=84=A4?= =?UTF-8?q?=EC=9D=B4=EC=85=98=20=EC=B2=98=EB=A6=AC=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/mocacong/server/service/CafeService.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/java/mocacong/server/service/CafeService.java b/src/main/java/mocacong/server/service/CafeService.java index da9f29c3..f52c8b09 100644 --- a/src/main/java/mocacong/server/service/CafeService.java +++ b/src/main/java/mocacong/server/service/CafeService.java @@ -179,7 +179,10 @@ public MyCommentCafesResponse findMyCommentCafes(Long memberId, int page, int co MyCommentCafeResponse.of(commentsGroupingByCafe.getKey(), commentsGroupingByCafe.getValue())) .collect(Collectors.toList()); - return new MyCommentCafesResponse(findIsEnd(page, count, comments), responses); + int toIndex = Math.min((page + 1) * count - 1, responses.size()); + int fromIndex = Math.min(toIndex, page * count); + + return new MyCommentCafesResponse(findIsEnd(page, count, responses), responses.subList(fromIndex, toIndex)); } /* @@ -187,13 +190,11 @@ public MyCommentCafesResponse findMyCommentCafes(Long memberId, int page, int co * comments 를 Slice 로 받아온 후 grouping 할 경우 페이지네이션 시 count 보다 적은 데이터 수가 반환될 수 있음. * 따라서 comments 전체를 받아온 후, mapId로 grouping 해야 한 후 페이지네이션해야 하므로 isLast 여부를 jpa Slice 로 구할 수 없음. * - * grouping 한 결과를 페이지네이션하면 카페 종류 수만큼 페이지네이션되므로, comments 전체를 바탕으로 페이지네이션하여 isEnd 를 찾음. - * - * 또한, 현재 mapId가 동일하다면 댓글 전체를 리스트로 반환하므로 API 스펙 협의 및 로직 개선 필요. + * 또한, 현재 mapId가 동일한 카페의 댓글 전체를 리스트로 반환하므로 API 스펙 협의 및 로직 개선 필요. */ - private boolean findIsEnd(int page, int count, List comments) { + private boolean findIsEnd(int page, int count, List responses) { int lastDataIndex = (page + 1) * count - 1; - return comments.size() - 1 <= lastDataIndex; + return responses.size() - 1 <= lastDataIndex; } @CacheEvict(key = "#mapId", value = "cafePreviewCache")