diff --git a/src/main/java/com/io/realworld/domain/aggregate/article/controller/ArticleController.java b/src/main/java/com/io/realworld/domain/aggregate/article/controller/ArticleController.java index fa2d24b..0629e41 100644 --- a/src/main/java/com/io/realworld/domain/aggregate/article/controller/ArticleController.java +++ b/src/main/java/com/io/realworld/domain/aggregate/article/controller/ArticleController.java @@ -28,6 +28,12 @@ public class ArticleController { return ArticleResponse.MultiArticles.builder().articles(articles).articlesCount(articles.size()).build(); } + @GetMapping("/feed") + public ArticleResponse.MultiArticles getFeed(@AuthenticationPrincipal UserAuth userAuth, @ModelAttribute FeedParam feedParam){ + List articles = articleService.getFeed(userAuth, feedParam); + return ArticleResponse.MultiArticles.builder().articles(articles).articlesCount(articles.size()).build(); + } + @GetMapping("/{slug}") public ArticleResponse.SingleArticle getArticle(@AuthenticationPrincipal UserAuth userAuth, @PathVariable("slug") String slug) { return ArticleResponse.SingleArticle.builder().article(articleService.getArticle(userAuth, slug)).build(); diff --git a/src/main/java/com/io/realworld/domain/aggregate/article/dto/FeedParam.java b/src/main/java/com/io/realworld/domain/aggregate/article/dto/FeedParam.java new file mode 100644 index 0000000..d65d613 --- /dev/null +++ b/src/main/java/com/io/realworld/domain/aggregate/article/dto/FeedParam.java @@ -0,0 +1,11 @@ +package com.io.realworld.domain.aggregate.article.dto; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class FeedParam { + private Integer offset; + private Integer limit; +} diff --git a/src/main/java/com/io/realworld/domain/aggregate/article/service/ArticleService.java b/src/main/java/com/io/realworld/domain/aggregate/article/service/ArticleService.java index 2b4885b..34741b9 100644 --- a/src/main/java/com/io/realworld/domain/aggregate/article/service/ArticleService.java +++ b/src/main/java/com/io/realworld/domain/aggregate/article/service/ArticleService.java @@ -1,9 +1,6 @@ package com.io.realworld.domain.aggregate.article.service; -import com.io.realworld.domain.aggregate.article.dto.ArticleParam; -import com.io.realworld.domain.aggregate.article.dto.ArticleUpdate; -import com.io.realworld.domain.aggregate.article.dto.Articledto; -import com.io.realworld.domain.aggregate.article.dto.ArticleResponse; +import com.io.realworld.domain.aggregate.article.dto.*; import com.io.realworld.domain.aggregate.user.dto.UserAuth; import java.util.List; @@ -12,6 +9,8 @@ import java.util.List; public interface ArticleService { List getArticles(UserAuth userAuth, ArticleParam articleParam); + List getFeed(UserAuth userAuth, FeedParam feedParam); + ArticleResponse getArticle(UserAuth userAuth, String slug); ArticleResponse createArticle(UserAuth userAuth, Articledto article); @@ -25,4 +24,5 @@ public interface ArticleService { ArticleResponse unFavoriteArticle(UserAuth userAuth, String slug); + } diff --git a/src/main/java/com/io/realworld/domain/aggregate/article/service/ArticleServiceImpl.java b/src/main/java/com/io/realworld/domain/aggregate/article/service/ArticleServiceImpl.java index 631d218..59596e1 100644 --- a/src/main/java/com/io/realworld/domain/aggregate/article/service/ArticleServiceImpl.java +++ b/src/main/java/com/io/realworld/domain/aggregate/article/service/ArticleServiceImpl.java @@ -1,14 +1,13 @@ package com.io.realworld.domain.aggregate.article.service; -import com.io.realworld.domain.aggregate.article.dto.ArticleParam; -import com.io.realworld.domain.aggregate.article.dto.ArticleUpdate; -import com.io.realworld.domain.aggregate.article.dto.Articledto; -import com.io.realworld.domain.aggregate.article.dto.ArticleResponse; +import com.io.realworld.domain.aggregate.article.dto.*; import com.io.realworld.domain.aggregate.article.entity.Article; import com.io.realworld.domain.aggregate.article.entity.Favorite; import com.io.realworld.domain.aggregate.article.repository.ArticleRepository; import com.io.realworld.domain.aggregate.article.repository.FavoriteRepository; import com.io.realworld.domain.aggregate.profile.dto.ProfileResponse; +import com.io.realworld.domain.aggregate.profile.entity.Follow; +import com.io.realworld.domain.aggregate.profile.repository.ProfileRepository; import com.io.realworld.domain.aggregate.profile.service.ProfileService; import com.io.realworld.domain.aggregate.tag.entity.Tag; import com.io.realworld.domain.aggregate.tag.service.TagService; @@ -35,7 +34,7 @@ import java.util.stream.Stream; @RequiredArgsConstructor public class ArticleServiceImpl implements ArticleService { - private final TagService tagService; + private final ProfileRepository profileRepository; private final ProfileService profileService; private final UserRepository userRepository; private final ArticleRepository articleRepository; @@ -68,6 +67,21 @@ public class ArticleServiceImpl implements ArticleService { }).collect(Collectors.toList()); } + @Override + public List getFeed(UserAuth userAuth, FeedParam feedParam){ + List
articles = new ArrayList<>(); + Integer offset = feedParam.getOffset() == null ? 0 : feedParam.getOffset(); + Integer limit = feedParam.getLimit() == null ? 20 : feedParam.getLimit(); + + Pageable pageable = PageRequest.of(offset,limit); + + List follows = profileRepository.findByFollowerId(userAuth.getId()); + System.out.println(follows.size()); + follows.stream().forEach(follow -> System.out.println(follow.getFollower().getUsername())); + + return List.of(); + } + // token을 받을수도 안 받을수도 있음. @Override public ArticleResponse getArticle(UserAuth userAuth, String slug) { diff --git a/src/main/java/com/io/realworld/domain/aggregate/profile/repository/ProfileRepository.java b/src/main/java/com/io/realworld/domain/aggregate/profile/repository/ProfileRepository.java index 284e8f7..fc4826f 100644 --- a/src/main/java/com/io/realworld/domain/aggregate/profile/repository/ProfileRepository.java +++ b/src/main/java/com/io/realworld/domain/aggregate/profile/repository/ProfileRepository.java @@ -3,6 +3,7 @@ package com.io.realworld.domain.aggregate.profile.repository; import com.io.realworld.domain.aggregate.profile.entity.Follow; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.List; import java.util.Optional; @@ -10,4 +11,6 @@ public interface ProfileRepository extends JpaRepository { Optional findByFolloweeIdAndFollowerId(Long followeeId, Long followerId); + List findByFollowerId(Long followeeId); + }