Skip to content

Commit 7965d4c

Browse files
committed
Fix: 무한스크롤 응답 수정
1 parent cedfce9 commit 7965d4c

2 files changed

Lines changed: 14 additions & 6 deletions

File tree

src/main/java/devkor/com/teamcback/domain/vote/controller/AdminVoteController.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import devkor.com.teamcback.domain.vote.entity.VoteStatus;
66
import devkor.com.teamcback.domain.vote.service.VoteService;
77
import devkor.com.teamcback.global.response.CommonResponse;
8+
import devkor.com.teamcback.global.response.CursorPageRes;
89
import io.swagger.v3.oas.annotations.Operation;
910
import io.swagger.v3.oas.annotations.Parameter;
1011
import io.swagger.v3.oas.annotations.media.Content;
@@ -14,8 +15,6 @@
1415
import lombok.RequiredArgsConstructor;
1516
import org.springframework.web.bind.annotation.*;
1617

17-
import java.util.List;
18-
1918
@RestController
2019
@RequiredArgsConstructor
2120
@RequestMapping("/api/admin/votes")
@@ -50,7 +49,7 @@ public CommonResponse<ChangeVoteStatusRes> changeVoteStatus(
5049
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
5150
})
5251
@GetMapping()
53-
public CommonResponse<List<GetVoteRes>> getVoteList(
52+
public CommonResponse<CursorPageRes<GetVoteRes>> getVoteList(
5453
@Parameter(description = "투표 상태", example = "REFLECTED")
5554
@RequestParam(name = "status", required = false) VoteStatus status,
5655
@Parameter(description = "마지막 조회 투표 ID", example = "0")

src/main/java/devkor/com/teamcback/domain/vote/service/VoteService.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import devkor.com.teamcback.domain.vote.repository.VoteTopicRepository;
1515
import devkor.com.teamcback.global.annotation.UpdateScore;
1616
import devkor.com.teamcback.global.exception.exception.GlobalException;
17+
import devkor.com.teamcback.global.response.CursorPageRes;
1718
import lombok.RequiredArgsConstructor;
1819
import org.springframework.stereotype.Service;
1920
import org.springframework.transaction.annotation.Transactional;
@@ -101,10 +102,11 @@ else if(!Objects.equals(voteRecord.getVoteOptionId(), voteOption.getId())){ //
101102
* 투표 리스트 조회
102103
*/
103104
@Transactional(readOnly = true)
104-
public List<GetVoteRes> getVoteList(VoteStatus status, Long lastVoteId, int size) {
105+
public CursorPageRes<GetVoteRes> getVoteList(VoteStatus status, Long lastVoteId, int size) {
106+
105107
List<GetVoteRes> resList = new ArrayList<>();
106108

107-
List<Vote> voteList = voteOptionRepository.getVoteByStatusWithPage(status, lastVoteId, size);
109+
List<Vote> voteList = voteOptionRepository.getVoteByStatusWithPage(status, lastVoteId, size + 1);
108110

109111
for(Vote vote : voteList) {
110112
// 투표 주제
@@ -119,7 +121,14 @@ public List<GetVoteRes> getVoteList(VoteStatus status, Long lastVoteId, int size
119121
resList.add(new GetVoteRes(vote.getId(), vote.getStatus().toString(), voteTopic.getId(), voteTopic.getTopic(), place.getId(), place.getName(), voteOptionList));
120122
}
121123

122-
return resList;
124+
// CursorPageRes 응답
125+
boolean hasNext = voteList.size() > size;
126+
if(hasNext) {
127+
resList.remove(size);
128+
}
129+
Long lastCursorId = voteList.isEmpty() ? null : voteList.get(voteList.size() - 1).getId();
130+
131+
return new CursorPageRes<>(resList, hasNext, lastCursorId);
123132
}
124133

125134
/**

0 commit comments

Comments
 (0)