private static final String DEFAULT_CURSOR_MARK = "-1";
private static final int PAGE_SIZE = 1;
private TempData getData() {
return getData(DEFAULT_CURSOR_MARK);
}
private TempData getData(String cursorMark) {
CassandraPageRequest firstRequest = CassandraPageRequest.first(PAGE_SIZE); //첫번째 페이지가 아닐 경우 오류가 발생함.
PagingState pagingState = null;
if (!DEFAULT_CURSOR_MARK.equalsIgnoreCase(cursorMark)) {
pagingState = PagingState.fromString(cursorMark);
}
CassandraPageRequest pageRequest = CassandraPageRequest.of(firstRequest, pagingState);
Slice<TestEntity> entitySlice = testRepository.findAll(pageRequest);
String previousCursorMark = DEFAULT_CURSOR_MARK;
if (!entitySlice.isFirst()) {
CassandraPageRequest p = (CassandraPageRequest) entitySlice.previousPageable();
if (p.isPaged() && p.getPagingState() != null) {
previousCursorMark = p.getPagingState().toString();
}
}
String nextCursorMark = DEFAULT_CURSOR_MARK;
if (!entitySlice.isLast()) {
CassandraPageRequest p = (CassandraPageRequest) entitySlice.nextPageable();
if (p.isPaged() && p.getPagingState() != null) {
nextCursorMark = p.getPagingState().toString();
}
}
return TempData.builder()
.previousCursorMark(previousCursorMark)
.entityList(entitySlice.getContent())
.nextCursorMark(nextCursorMark)
.build();
}