Skip to content

Commit

Permalink
Merge pull request #132 from TeamOwori/refactor/#131/story
Browse files Browse the repository at this point in the history
[FEFACTOR] Story 전체 조회 코드 리팩토링
  • Loading branch information
youngeun-dev authored May 21, 2024
2 parents 009145b + 851ee22 commit 43d35fd
Show file tree
Hide file tree
Showing 6 changed files with 106 additions and 138 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -86,14 +86,13 @@ public ResponseEntity<StoryIdResponse> addStory(@RequestBody @Valid PostStoryReq
* @return 전체 조회 dto가 반환됩니다.
*/
@GetMapping
public ResponseEntity<StoryPagingResponse> findAllStory(
@PageableDefault(sort = "created_at", direction = DESC) Pageable pageable) {
public ResponseEntity<StoryPagingResponse> findAllStory(@PageableDefault(sort = "created_at", direction = DESC) Pageable pageable) {
return ResponseEntity.ok(storyService.findAllStory(pageable));
}

/**
* 이야기 검색을 위한 컨트롤러입니다.
* @param keyword 검색어입니다.
* @param keyword 검색어입니다.
* @param pageable
* @return 검색 결과 dto가 반환됩니다.
*/
Expand All @@ -110,9 +109,7 @@ public ResponseEntity<StoryPagingResponse> findStoryBySearch(
* @return 전체 조회 dto가 반환됩니다.
*/
@GetMapping("/member")
public ResponseEntity<StoryPagingResponse> findStoryByWriter(
@PageableDefault(sort = "created_at", direction = DESC) Pageable pageable) {

public ResponseEntity<StoryPagingResponse> findStoryByWriter(@PageableDefault(sort = "created_at", direction = DESC) Pageable pageable) {
return ResponseEntity.ok(storyService.findStoryByWriter(pageable));
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,47 +1,19 @@
package com.owori.domain.story.dto.response;

import com.owori.domain.story.entity.Story;
import com.owori.domain.story.mapper.StoryMapper;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.springframework.data.domain.Page;

import java.util.ArrayList;
import java.util.List;


@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class StoryPagingResponse {
private static final StoryMapper storyMapper = new StoryMapper();
private static final Integer LAST_PAGE = -1;

private List<FindAllStoryResponse> stories = new ArrayList<>();
private Integer nextPage;
private Integer lastPage;



public static StoryPagingResponse of(Page<Story> pageStory){
if(!pageStory.hasNext()){
return StoryPagingResponse.newLastScroll(pageStory.getContent(), pageStory.getTotalPages() - 1);
}
return StoryPagingResponse.newPageHasNext(pageStory.getContent(), pageStory.getTotalPages() - 1, pageStory.getPageable().getPageNumber() + 1);
}

private static StoryPagingResponse newPageHasNext(List<Story> stories, Integer lastPage, Integer nextPage) {
return new StoryPagingResponse(getContents(stories), lastPage, nextPage);
}

private static StoryPagingResponse newLastScroll(List<Story> stories, Integer lastPage) {
return newPageHasNext(stories, lastPage, LAST_PAGE);
}

private static List<FindAllStoryResponse> getContents(List<Story> stories){
return stories.stream().map(story -> storyMapper.toFindAllStoryResponse(story)).toList();
}


private boolean hasNext;
}
16 changes: 8 additions & 8 deletions src/main/java/com/owori/domain/story/mapper/StoryMapper.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package com.owori.domain.story.mapper;

import com.owori.domain.comment.dto.response.CommentResponse;
import com.owori.domain.family.entity.Family;
import com.owori.domain.member.entity.Member;
import com.owori.domain.story.dto.request.PostStoryRequest;
import com.owori.domain.story.dto.response.FindAllStoryGroupResponse;
import com.owori.domain.story.dto.response.FindAllStoryResponse;
import com.owori.domain.story.dto.response.FindStoryResponse;
import com.owori.domain.story.dto.response.StoryPagingResponse;
import com.owori.domain.story.entity.Story;
import org.springframework.data.domain.Slice;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Component;

import java.util.List;
Expand Down Expand Up @@ -58,12 +58,12 @@ public FindStoryResponse toFindStoryResponse(Story story, boolean isLiked, List<
.build();
}

public FindAllStoryGroupResponse toFindAllStoryGroupResponse(Slice<Story> stories) {
List<FindAllStoryResponse> responses = stories.getContent().stream()
.map(this::toFindAllStoryResponse)
.toList();

return new FindAllStoryGroupResponse(responses, stories.hasNext());
public StoryPagingResponse toStoryPagingResponse(Page<Story> pageStory) {
List<FindAllStoryResponse> stories = pageStory.getContent().stream().map(story -> toFindAllStoryResponse(story)).toList();
return StoryPagingResponse.builder()
.stories(stories)
.hasNext(pageStory.hasNext())
.build();
}

public FindAllStoryGroupResponse toFindAllStoryGroupResponse2(List<Story> stories) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ private void validateDate(LocalDate startDate, LocalDate endDate) {
@Transactional(readOnly = true)
public StoryPagingResponse findAllStory(Pageable pageable) {
Family family = authService.getLoginUser().getFamily();
return StoryPagingResponse.of(storyRepository.findAllStory(pageable, family));
return storyMapper.toStoryPagingResponse(storyRepository.findAllStory(pageable, family));
}

public FindAllStoryGroupResponse findAllStory2(String sort) {
Expand Down Expand Up @@ -104,7 +104,7 @@ public StoryPagingResponse findStoryBySearch(String keyword, Pageable pageable)
Member loginUser = authService.getLoginUser();
keywordService.addKeyword(keyword, loginUser);

return StoryPagingResponse.of(storyRepository.findStoryBySearch(pageable, keyword, loginUser.getFamily()));
return storyMapper.toStoryPagingResponse(storyRepository.findStoryBySearch(pageable, keyword, loginUser.getFamily()));
}

public FindAllStoryGroupResponse findStoryBySearch2(String keyword, String sort) {
Expand All @@ -117,7 +117,7 @@ public FindAllStoryGroupResponse findStoryBySearch2(String keyword, String sort)
@Transactional(readOnly = true)
public StoryPagingResponse findStoryByWriter(Pageable pageable) {
Member member = authService.getLoginUser();
return StoryPagingResponse.of(storyRepository.findStoryByWriter(pageable, member));
return storyMapper.toStoryPagingResponse(storyRepository.findStoryByWriter(pageable, member));
}

public FindAllStoryGroupResponse findStoryByWriter2() {
Expand All @@ -130,7 +130,7 @@ public FindAllStoryGroupResponse findStoryByWriter2() {
@Transactional(readOnly = true)
public StoryPagingResponse findStoryByHeart(Pageable pageable) {
Member member = authService.getLoginUser();
return StoryPagingResponse.of(storyRepository.findStoryByHeart(pageable, member));
return storyMapper.toStoryPagingResponse(storyRepository.findStoryByHeart(pageable, member));
}

public FindAllStoryGroupResponse findStoryByHeart2() {
Expand Down
1 change: 0 additions & 1 deletion src/main/resources/application-local.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ server:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/owori?serverTimezone=Asia/Seoul
username: root

config:
Expand Down
Loading

0 comments on commit 43d35fd

Please sign in to comment.