diff --git a/src/main/java/com/tenten/linkhub/domain/space/controller/dto/space/PublicSpacesFindWithFilterApiRequest.java b/src/main/java/com/tenten/linkhub/domain/space/controller/dto/space/PublicSpacesFindWithFilterApiRequest.java index 3b4faf8c..e024cf30 100644 --- a/src/main/java/com/tenten/linkhub/domain/space/controller/dto/space/PublicSpacesFindWithFilterApiRequest.java +++ b/src/main/java/com/tenten/linkhub/domain/space/controller/dto/space/PublicSpacesFindWithFilterApiRequest.java @@ -4,10 +4,10 @@ import io.swagger.v3.oas.annotations.media.Schema; public record PublicSpacesFindWithFilterApiRequest( - @Schema(title = "마지막 favoriteCount", example = "1") + @Schema(title = "마지막 favoriteCount", example = "0") Long lastFavoriteCount, - @Schema(title = "마지막 spaceId", example = "1") + @Schema(title = "마지막 spaceId", example = "62") Long lastSpaceId, @Schema(title = "페이지 크기", example = "10") diff --git a/src/main/java/com/tenten/linkhub/domain/space/repository/common/mapper/RepositoryDtoMapper.java b/src/main/java/com/tenten/linkhub/domain/space/repository/common/mapper/RepositoryDtoMapper.java index 6cacd2e1..becb0ba2 100644 --- a/src/main/java/com/tenten/linkhub/domain/space/repository/common/mapper/RepositoryDtoMapper.java +++ b/src/main/java/com/tenten/linkhub/domain/space/repository/common/mapper/RepositoryDtoMapper.java @@ -1,5 +1,8 @@ package com.tenten.linkhub.domain.space.repository.common.mapper; +import com.tenten.linkhub.domain.space.common.SpaceCursorPageRequest; +import com.tenten.linkhub.domain.space.common.SpaceCursorSlice; +import com.tenten.linkhub.domain.space.model.space.Space; import com.tenten.linkhub.domain.space.model.space.SpaceImage; import com.tenten.linkhub.domain.space.repository.common.dto.SpaceAndOwnerNickName; import com.tenten.linkhub.domain.space.repository.common.dto.SpaceAndSpaceImageOwnerNickName; @@ -7,6 +10,7 @@ import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.stream.Collectors; @Component @@ -29,4 +33,16 @@ public List toSpaceAndSpaceImageOwnerNickNames( .collect(Collectors.toList()); } + public SpaceCursorSlice toSpaceCursorSlice(List contents, SpaceCursorPageRequest pageable, boolean hasNext){ + Space lastSpace = contents.isEmpty() ? null : contents.get(contents.size() - 1).space(); + + return SpaceCursorSlice.of( + Objects.isNull(lastSpace) ? null : lastSpace.getFavoriteCount(), + Objects.isNull(lastSpace) ? null : lastSpace.getId(), + pageable.pageSize(), + hasNext, + contents + ); + } + } diff --git a/src/main/java/com/tenten/linkhub/domain/space/repository/space/querydsl/SpaceQueryDslRepository.java b/src/main/java/com/tenten/linkhub/domain/space/repository/space/querydsl/SpaceQueryDslRepository.java index b465cada..4e2ab44d 100644 --- a/src/main/java/com/tenten/linkhub/domain/space/repository/space/querydsl/SpaceQueryDslRepository.java +++ b/src/main/java/com/tenten/linkhub/domain/space/repository/space/querydsl/SpaceQueryDslRepository.java @@ -18,6 +18,7 @@ import org.springframework.stereotype.Repository; import java.util.List; +import java.util.Objects; import static com.tenten.linkhub.domain.member.model.QMember.member; import static com.tenten.linkhub.domain.space.model.space.QSpace.space; @@ -62,15 +63,7 @@ public SpaceCursorSlice findPublicSpacesJoinSpa hasNext = true; } - Space lastSpace = contents.get(contents.size() - 1).space(); - - return SpaceCursorSlice.of( - lastSpace.getFavoriteCount(), - lastSpace.getId(), - pageable.pageSize(), - hasNext, - contents - ); + return mapper.toSpaceCursorSlice(contents, pageable, hasNext); } public Slice searchPublicSpacesJoinSpaceImageByCondition(QueryCondition condition) { diff --git a/src/test/java/com/tenten/linkhub/domain/space/service/DefaultSpaceServiceTest.java b/src/test/java/com/tenten/linkhub/domain/space/service/DefaultSpaceServiceTest.java index 79d6aa6c..eade612e 100644 --- a/src/test/java/com/tenten/linkhub/domain/space/service/DefaultSpaceServiceTest.java +++ b/src/test/java/com/tenten/linkhub/domain/space/service/DefaultSpaceServiceTest.java @@ -157,9 +157,9 @@ void findMemberSpacesByQuery_emptyKeyWord_emptyFilter() { List content = response.responses().getContent(); assertThat(content.size()).isEqualTo(2); - assertThat(content.get(1).spaceName()).isEqualTo("세번째 스페이스"); - assertThat(content.get(1).spaceImagePath()).isEqualTo("https://testimage3"); - assertThat(content.get(1).ownerNickName()).isEqualTo("백둥이"); + assertThat(content.get(0).spaceName()).isEqualTo("세번째 스페이스"); + assertThat(content.get(0).spaceImagePath()).isEqualTo("https://testimage3"); + assertThat(content.get(0).ownerNickName()).isEqualTo("백둥이"); } @Test @@ -176,12 +176,11 @@ void findMemberSpacesByQuery_emptyKeyWord_emptyFilter_findMySpaces() { List content = response.responses().getContent(); assertThat(content.size()).isEqualTo(2); - assertThat(content.get(0).spaceName()).isEqualTo("첫번째 스페이스"); - assertThat(content.get(0).description()).isEqualTo("첫번째 스페이스 소개글"); - assertThat(content.get(0).category()).isEqualTo(Category.KNOWLEDGE_ISSUE_CAREER); - assertThat(content.get(0).spaceImagePath()).isEqualTo("https://testimage1"); + assertThat(content.get(0).spaceName()).isEqualTo("두번째 스페이스"); + assertThat(content.get(0).spaceImagePath()).isEqualTo("https://testimage2"); assertThat(content.get(0).ownerNickName()).isEqualTo("잠자는 사자의 콧털"); - assertThat(content.get(1).spaceName()).isEqualTo("두번째 스페이스"); + assertThat(content.get(1).spaceName()).isEqualTo("첫번째 스페이스"); + assertThat(content.get(1).spaceImagePath()).isEqualTo("https://testimage1"); assertThat(content.get(1).ownerNickName()).isEqualTo("잠자는 사자의 콧털"); }