Skip to content

Commit

Permalink
🚑 hotfix: pagination meta data fix (#481)
Browse files Browse the repository at this point in the history
  • Loading branch information
seonghun-dev authored Jun 11, 2024
1 parent b353bbc commit 39b9536
Show file tree
Hide file tree
Showing 8 changed files with 35 additions and 54 deletions.
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
package com.depromeet.common.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;

@Builder
public record InfiniteScrollMetaResponseDto(
@AllArgsConstructor
public class InfiniteScrollMetaResponseDto implements MetaInterface {
@Schema(description = "전체 데이터 개수", example = "100")
int totalCount,
private int totalCount;

@Schema(description = "다음 페이지 커서", example = "10")
int nextCursor
) {
}
private int nextCursor;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.depromeet.common.dto;

/**
* Interface for metadata used in PaginationResponse
*/
public interface MetaInterface {
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.depromeet.common.dto;

public class PageMetaResponseDto implements MetaInterface {
private int page;
private int size;
private int totalPage;
private boolean firstPage;
private boolean lastPage;
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
@AllArgsConstructor
@NoArgsConstructor
@Getter
public class InfiniteScrollResponseDto<T, U> {
public class PaginationResponseDto<T, U extends MetaInterface> {

private List<T> data;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.depromeet.domains.item.service;

import com.depromeet.common.dto.InfiniteScrollMetaResponseDto;
import com.depromeet.common.dto.InfiniteScrollResponseDto;
import com.depromeet.common.dto.PaginationResponseDto;
import com.depromeet.common.error.exception.internal.BusinessException;
import com.depromeet.domains.item.dao.UserItemLikeDao;
import com.depromeet.domains.item.dto.response.ItemGroupByDateResponseDto;
Expand Down Expand Up @@ -56,7 +56,7 @@ public void unlikeItem(User user, Long itemId) {
}

@Transactional(readOnly = true)
public InfiniteScrollResponseDto<?,?> getLikedItemsByUser(User user, long lastCursor) {
public PaginationResponseDto<?,?> getLikedItemsByUser(User user, long lastCursor) {

List<UserItemLikeDao> itemLikeDaoList = itemLikeRepository.findByUserId(user.getId(),lastCursor);

Expand All @@ -75,7 +75,7 @@ public InfiniteScrollResponseDto<?,?> getLikedItemsByUser(User user, long lastCu

var meta = new InfiniteScrollMetaResponseDto(itemLikeDaoList.size(), -1);

return new InfiniteScrollResponseDto<>(itemGroupByDateResponseDto, meta);
return new PaginationResponseDto<>(itemGroupByDateResponseDto, meta);
}

private ItemGroupResponseDto userItemLikeDaotoItemGroupResponseDto(UserItemLikeDao userItemLikeDao) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.depromeet.domains.user.controller;

import com.depromeet.common.dto.InfiniteScrollResponseDto;
import com.depromeet.common.dto.PaginationResponseDto;
import com.depromeet.common.dto.ResponseDto;
import com.depromeet.domains.user.dto.response.UserPoiResponseDto;
import com.depromeet.domains.user.service.UserItemService;
Expand All @@ -27,7 +27,7 @@ public class UserItemController {
@Operation(summary = "사용자가 드랍한 아이템 조회")
@ApiResponse(responseCode = "200", description = "사용자가 드랍한 아이템 조회 성공")
@GetMapping("/drop")
public ResponseEntity<InfiniteScrollResponseDto<?, ?>> getUserDropItems(
public ResponseEntity<PaginationResponseDto<?, ?>> getUserDropItems(
@ReqUser User user,
@RequestParam(defaultValue = "9223372036854775000") long lastCursor
) {
Expand All @@ -48,7 +48,7 @@ public ResponseEntity<UserPoiResponseDto> getUserDropItemsPoints(
@Operation(summary = "사용자가 찜한 아이템 조회")
@ApiResponse(responseCode = "200", description = "사용자가 찜한 아이템 조회 성공")
@GetMapping("/like")
public ResponseEntity<InfiniteScrollResponseDto<?, ?>> getUserLikedItems(
public ResponseEntity<PaginationResponseDto<?, ?>> getUserLikedItems(
@ReqUser User user,
@RequestParam(defaultValue = "9223372036854775000") long lastCursor
) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.depromeet.domains.user.service;

import com.depromeet.common.dto.InfiniteScrollMetaResponseDto;
import com.depromeet.common.dto.InfiniteScrollResponseDto;

import com.depromeet.domains.item.dao.ItemDao;
import com.depromeet.domains.item.dto.response.ItemGroupByDateResponseDto;
import com.depromeet.domains.item.dto.response.ItemGroupResponseDto;
Expand All @@ -17,7 +17,7 @@
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.depromeet.common.dto.PaginationResponseDto;
import java.util.List;

import static com.depromeet.util.WeekUtil.getWeeksAgo;
Expand All @@ -32,7 +32,7 @@ public class UserItemService {
private final ItemLikeService itemLikeService;

@Transactional(readOnly = true)
public InfiniteScrollResponseDto<?, ?> getDropItems(User user, long nextCursor) {
public PaginationResponseDto<?, ?> getDropItems(User user, long nextCursor) {
List<ItemDao> itemList = itemRepository.findByUserId(user.getId(), nextCursor);
List<ItemGroupByDateResponseDto> itemGroupByDateResponseDto = itemList
.stream()
Expand All @@ -52,7 +52,7 @@ public class UserItemService {
.totalCount(itemList.size())
.nextCursor(-1).build();

return new InfiniteScrollResponseDto<>(itemGroupByDateResponseDto, meta);
return new PaginationResponseDto<>(itemGroupByDateResponseDto, meta);
}

@Transactional(readOnly = true)
Expand Down Expand Up @@ -86,7 +86,7 @@ private ItemGroupResponseDto itemDaotoItemGroupResponseDto(User user, ItemDao it


@Transactional(readOnly = true)
public InfiniteScrollResponseDto<?, ?> getLikedItems(User user, long nextCursor) {
public PaginationResponseDto<?, ?> getLikedItems(User user, long nextCursor) {
return itemLikeService.getLikedItemsByUser(user, nextCursor);
}

Expand Down

0 comments on commit 39b9536

Please sign in to comment.