From 520fae5dd2f2ee4c6873d40afd8825bb39c1c6bc Mon Sep 17 00:00:00 2001 From: halin Date: Thu, 8 Jun 2023 18:02:45 +0900 Subject: [PATCH 1/6] =?UTF-8?q?feat:=20=EA=B2=8C=EC=8B=9C=EB=AC=BC=20?= =?UTF-8?q?=ED=95=84=ED=84=B0=EB=A7=81=20=EC=A1=B0=ED=9A=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../post/controller/PostController.java | 6 +++++ .../backend/domain/post/dto/PostDto.java | 11 ++++++++ .../post/repository/PostRepository.java | 4 +++ .../domain/post/service/PostService.java | 11 ++++++++ .../post/service/PostSpecification.java | 25 +++++++++++++++++++ 5 files changed, 57 insertions(+) create mode 100644 backend/src/main/java/com/rising/backend/domain/post/service/PostSpecification.java diff --git a/backend/src/main/java/com/rising/backend/domain/post/controller/PostController.java b/backend/src/main/java/com/rising/backend/domain/post/controller/PostController.java index 9503868..a7858f6 100644 --- a/backend/src/main/java/com/rising/backend/domain/post/controller/PostController.java +++ b/backend/src/main/java/com/rising/backend/domain/post/controller/PostController.java @@ -47,7 +47,13 @@ public ResponseEntity getList(@PageableDefault(size = 10, sort = return ResponseEntity.ok(ResultResponse.of(ResultCode.POST_PAGINATION_SUCCESS, list)); } + @PostMapping("/search") + public ResponseEntity getProjects(PostDto.PostGetFilteredListRequest dto, + @PageableDefault(sort = {"createdAt"}, direction = Sort.Direction.DESC) Pageable page) { + List result = postService.getPosts(dto, page); + return ResponseEntity.ok(ResultResponse.of(ResultCode.POST_PAGINATION_SUCCESS, result)); + } @LoginRequired @GetMapping("/{postId}/session") diff --git a/backend/src/main/java/com/rising/backend/domain/post/dto/PostDto.java b/backend/src/main/java/com/rising/backend/domain/post/dto/PostDto.java index be61c54..6b74772 100644 --- a/backend/src/main/java/com/rising/backend/domain/post/dto/PostDto.java +++ b/backend/src/main/java/com/rising/backend/domain/post/dto/PostDto.java @@ -30,6 +30,17 @@ public static class PostCreateRequest { private List tags = new ArrayList<>(); } + @AllArgsConstructor(access = AccessLevel.PRIVATE) + @NoArgsConstructor(access = AccessLevel.PRIVATE) + @Getter + public static class PostGetFilteredListRequest { + + private PostType type; + + private List tags = new ArrayList<>(); + } + + @Builder @AllArgsConstructor(access = AccessLevel.PRIVATE) @NoArgsConstructor(access = AccessLevel.PRIVATE) diff --git a/backend/src/main/java/com/rising/backend/domain/post/repository/PostRepository.java b/backend/src/main/java/com/rising/backend/domain/post/repository/PostRepository.java index 8fb25e3..6dad869 100644 --- a/backend/src/main/java/com/rising/backend/domain/post/repository/PostRepository.java +++ b/backend/src/main/java/com/rising/backend/domain/post/repository/PostRepository.java @@ -2,6 +2,9 @@ import com.rising.backend.domain.post.domain.Post; import com.rising.backend.domain.post.domain.Tag; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; @@ -11,4 +14,5 @@ public interface PostRepository extends JpaRepository { List findByUserId(Long userId); List findTagById(Long id); + Page findAll(Specification spec, Pageable pageable); } diff --git a/backend/src/main/java/com/rising/backend/domain/post/service/PostService.java b/backend/src/main/java/com/rising/backend/domain/post/service/PostService.java index 6d218d9..1280d3b 100644 --- a/backend/src/main/java/com/rising/backend/domain/post/service/PostService.java +++ b/backend/src/main/java/com/rising/backend/domain/post/service/PostService.java @@ -13,6 +13,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; import java.util.List; @@ -57,6 +58,16 @@ public List pageList(Pageable pageable) { return postMapper.toDtoPageList(postList).getContent(); } + public List getPosts(PostDto.PostGetFilteredListRequest dto, Pageable pageable) { + if (dto == null) { + return pageList(pageable); + } + + Specification postSpecification = PostSpecification.searchWith(dto.getTags(), dto.getType()); + Page posts = postRepository.findAll(postSpecification, pageable); + return postMapper.toDtoPageList(posts).getContent(); + } + public String getSessionUrl(Long postId, User user) { Post post = findPostById(postId); if (!checkIsAuthor(post, user)) { diff --git a/backend/src/main/java/com/rising/backend/domain/post/service/PostSpecification.java b/backend/src/main/java/com/rising/backend/domain/post/service/PostSpecification.java new file mode 100644 index 0000000..d00beff --- /dev/null +++ b/backend/src/main/java/com/rising/backend/domain/post/service/PostSpecification.java @@ -0,0 +1,25 @@ +package com.rising.backend.domain.post.service; + +import com.rising.backend.domain.post.domain.Post; +import com.rising.backend.domain.post.domain.PostType; +import org.springframework.data.jpa.domain.Specification; + +import javax.persistence.criteria.Predicate; +import java.util.ArrayList; +import java.util.List; + +public class PostSpecification { + public static Specification searchWith(final List tags, final PostType postType) { + + return ((root, query, builder) -> { + List predicates = new ArrayList<>(); + if (postType != null) { + predicates.add(builder.equal(root.get("postType"), postType)); + } + if (!tags.isEmpty()) { + predicates.add(builder.in(root.get("tag")).value(tags)); + } + return builder.and(predicates.toArray(new Predicate[0])); + }); + } +} From 4f450b115dbfebac85113ea898566445fd187ec2 Mon Sep 17 00:00:00 2001 From: halin Date: Thu, 8 Jun 2023 21:26:46 +0900 Subject: [PATCH 2/6] =?UTF-8?q?fix:=20post=20column=EB=AA=85=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/rising/backend/domain/post/domain/Post.java | 2 +- .../com/rising/backend/domain/post/dto/PostDto.java | 11 ----------- .../rising/backend/domain/post/mapper/PostMapper.java | 6 +++--- 3 files changed, 4 insertions(+), 15 deletions(-) diff --git a/backend/src/main/java/com/rising/backend/domain/post/domain/Post.java b/backend/src/main/java/com/rising/backend/domain/post/domain/Post.java index bf35f08..8d2eb7a 100644 --- a/backend/src/main/java/com/rising/backend/domain/post/domain/Post.java +++ b/backend/src/main/java/com/rising/backend/domain/post/domain/Post.java @@ -45,7 +45,7 @@ public class Post extends BaseEntity { @NotNull @Enumerated(EnumType.STRING) - private PostType type; + private PostType postType; @ManyToMany @JoinTable(name = "POST_TAG", diff --git a/backend/src/main/java/com/rising/backend/domain/post/dto/PostDto.java b/backend/src/main/java/com/rising/backend/domain/post/dto/PostDto.java index 6b74772..be61c54 100644 --- a/backend/src/main/java/com/rising/backend/domain/post/dto/PostDto.java +++ b/backend/src/main/java/com/rising/backend/domain/post/dto/PostDto.java @@ -30,17 +30,6 @@ public static class PostCreateRequest { private List tags = new ArrayList<>(); } - @AllArgsConstructor(access = AccessLevel.PRIVATE) - @NoArgsConstructor(access = AccessLevel.PRIVATE) - @Getter - public static class PostGetFilteredListRequest { - - private PostType type; - - private List tags = new ArrayList<>(); - } - - @Builder @AllArgsConstructor(access = AccessLevel.PRIVATE) @NoArgsConstructor(access = AccessLevel.PRIVATE) diff --git a/backend/src/main/java/com/rising/backend/domain/post/mapper/PostMapper.java b/backend/src/main/java/com/rising/backend/domain/post/mapper/PostMapper.java index 9e22fb8..08b4830 100644 --- a/backend/src/main/java/com/rising/backend/domain/post/mapper/PostMapper.java +++ b/backend/src/main/java/com/rising/backend/domain/post/mapper/PostMapper.java @@ -30,7 +30,7 @@ public Post toPostEntity(PostCreateRequest postCreate, User loginUser) { .title(postCreate.getTitle()) .videoUrl(null) .sessionUrl(uuidConverter.toBase64(UUID.randomUUID())) - .type(postCreate.getType()).build(); + .postType(postCreate.getType()).build(); } public PostDto.PostDetailResponse toPostDto(Post post, List tags) { @@ -39,7 +39,7 @@ public PostDto.PostDetailResponse toPostDto(Post post, List tags) { .title(post.getTitle()) .content(post.getContent()) .videoUrl(post.getVideoUrl()) - .type(post.getType()) + .type(post.getPostType()) .tags(tags) .created_at(post.getCreatedAt().toLocalDate()) .build(); @@ -68,7 +68,7 @@ public PostGetListResponse toPostListResponse(Post post) { .content(post.getContent()) .created_at(post.getCreatedAt().toLocalDate()) .title(post.getTitle()) - .type(post.getType()) + .type(post.getPostType()) .tags(TagtoString(post.getTag())) .commentCount(commentRepository.countByPost_Id(post.getId())) .build(); From 8e1b8674e02f919fd1e18618e8efdedeeef4425d Mon Sep 17 00:00:00 2001 From: halin Date: Thu, 8 Jun 2023 21:27:04 +0900 Subject: [PATCH 3/6] =?UTF-8?q?feat:=20=EA=B2=8C=EC=8B=9C=EA=B8=80=20?= =?UTF-8?q?=ED=83=80=EC=9E=85=20=ED=95=84=ED=84=B0=EB=A7=81=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/post/controller/PostController.java | 17 +++++++---------- .../domain/post/repository/PostRepository.java | 5 +++-- .../domain/post/service/PostService.java | 11 +++-------- .../domain/post/service/PostSpecification.java | 5 +---- 4 files changed, 14 insertions(+), 24 deletions(-) diff --git a/backend/src/main/java/com/rising/backend/domain/post/controller/PostController.java b/backend/src/main/java/com/rising/backend/domain/post/controller/PostController.java index a7858f6..3fab188 100644 --- a/backend/src/main/java/com/rising/backend/domain/post/controller/PostController.java +++ b/backend/src/main/java/com/rising/backend/domain/post/controller/PostController.java @@ -1,5 +1,6 @@ package com.rising.backend.domain.post.controller; +import com.rising.backend.domain.post.domain.PostType; import com.rising.backend.domain.post.dto.PostDto; import com.rising.backend.domain.post.service.PostService; import com.rising.backend.domain.user.domain.User; @@ -42,16 +43,12 @@ public ResponseEntity create( } @GetMapping - public ResponseEntity getList(@PageableDefault(size = 10, sort = "createdAt", direction = Sort.Direction.DESC) final Pageable pageable) { - List list = postService.pageList(pageable); - return ResponseEntity.ok(ResultResponse.of(ResultCode.POST_PAGINATION_SUCCESS, list)); - } - - @PostMapping("/search") - public ResponseEntity getProjects(PostDto.PostGetFilteredListRequest dto, - @PageableDefault(sort = {"createdAt"}, direction = Sort.Direction.DESC) Pageable page) { - - List result = postService.getPosts(dto, page); + public ResponseEntity getList(@RequestParam("enumValue") PostType postType, @PageableDefault(size = 10, sort = "createdAt", direction = Sort.Direction.DESC) final Pageable pageable) { + List result = null; + if (postType == null) + result = postService.pageList(pageable); + else + result = postService.getPostsByType(postType, pageable); return ResponseEntity.ok(ResultResponse.of(ResultCode.POST_PAGINATION_SUCCESS, result)); } diff --git a/backend/src/main/java/com/rising/backend/domain/post/repository/PostRepository.java b/backend/src/main/java/com/rising/backend/domain/post/repository/PostRepository.java index 6dad869..78be30c 100644 --- a/backend/src/main/java/com/rising/backend/domain/post/repository/PostRepository.java +++ b/backend/src/main/java/com/rising/backend/domain/post/repository/PostRepository.java @@ -1,10 +1,10 @@ package com.rising.backend.domain.post.repository; import com.rising.backend.domain.post.domain.Post; +import com.rising.backend.domain.post.domain.PostType; import com.rising.backend.domain.post.domain.Tag; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; @@ -14,5 +14,6 @@ public interface PostRepository extends JpaRepository { List findByUserId(Long userId); List findTagById(Long id); - Page findAll(Specification spec, Pageable pageable); + + Page findByPostType(PostType postType, Pageable pageable); } diff --git a/backend/src/main/java/com/rising/backend/domain/post/service/PostService.java b/backend/src/main/java/com/rising/backend/domain/post/service/PostService.java index 1280d3b..66c89af 100644 --- a/backend/src/main/java/com/rising/backend/domain/post/service/PostService.java +++ b/backend/src/main/java/com/rising/backend/domain/post/service/PostService.java @@ -1,6 +1,7 @@ package com.rising.backend.domain.post.service; import com.rising.backend.domain.post.domain.Post; +import com.rising.backend.domain.post.domain.PostType; import com.rising.backend.domain.post.domain.Tag; import com.rising.backend.domain.post.dto.PostDto; import com.rising.backend.domain.post.mapper.PostMapper; @@ -13,7 +14,6 @@ import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; import java.util.List; @@ -58,13 +58,8 @@ public List pageList(Pageable pageable) { return postMapper.toDtoPageList(postList).getContent(); } - public List getPosts(PostDto.PostGetFilteredListRequest dto, Pageable pageable) { - if (dto == null) { - return pageList(pageable); - } - - Specification postSpecification = PostSpecification.searchWith(dto.getTags(), dto.getType()); - Page posts = postRepository.findAll(postSpecification, pageable); + public List getPostsByType(PostType postType, Pageable pageable) { + Page posts = postRepository.findByPostType(postType, pageable); return postMapper.toDtoPageList(posts).getContent(); } diff --git a/backend/src/main/java/com/rising/backend/domain/post/service/PostSpecification.java b/backend/src/main/java/com/rising/backend/domain/post/service/PostSpecification.java index d00beff..2e1941d 100644 --- a/backend/src/main/java/com/rising/backend/domain/post/service/PostSpecification.java +++ b/backend/src/main/java/com/rising/backend/domain/post/service/PostSpecification.java @@ -9,16 +9,13 @@ import java.util.List; public class PostSpecification { - public static Specification searchWith(final List tags, final PostType postType) { + public static Specification searchWith(final PostType postType) { return ((root, query, builder) -> { List predicates = new ArrayList<>(); if (postType != null) { predicates.add(builder.equal(root.get("postType"), postType)); } - if (!tags.isEmpty()) { - predicates.add(builder.in(root.get("tag")).value(tags)); - } return builder.and(predicates.toArray(new Predicate[0])); }); } From 29532e65e23eccd73ac5903bbd2441fce4724cf4 Mon Sep 17 00:00:00 2001 From: halin Date: Thu, 8 Jun 2023 21:51:15 +0900 Subject: [PATCH 4/6] =?UTF-8?q?fix:=20=EC=95=88=20=EC=93=B0=EB=8A=94=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../post/service/PostSpecification.java | 22 ------------------- 1 file changed, 22 deletions(-) delete mode 100644 backend/src/main/java/com/rising/backend/domain/post/service/PostSpecification.java diff --git a/backend/src/main/java/com/rising/backend/domain/post/service/PostSpecification.java b/backend/src/main/java/com/rising/backend/domain/post/service/PostSpecification.java deleted file mode 100644 index 2e1941d..0000000 --- a/backend/src/main/java/com/rising/backend/domain/post/service/PostSpecification.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.rising.backend.domain.post.service; - -import com.rising.backend.domain.post.domain.Post; -import com.rising.backend.domain.post.domain.PostType; -import org.springframework.data.jpa.domain.Specification; - -import javax.persistence.criteria.Predicate; -import java.util.ArrayList; -import java.util.List; - -public class PostSpecification { - public static Specification searchWith(final PostType postType) { - - return ((root, query, builder) -> { - List predicates = new ArrayList<>(); - if (postType != null) { - predicates.add(builder.equal(root.get("postType"), postType)); - } - return builder.and(predicates.toArray(new Predicate[0])); - }); - } -} From 420a40dfd246d9d5e2fb3349aa5b1432a50a2198 Mon Sep 17 00:00:00 2001 From: halin Date: Sat, 10 Jun 2023 01:06:34 +0900 Subject: [PATCH 5/6] =?UTF-8?q?hotfix:=20Parameter=20required=20=EC=86=8D?= =?UTF-8?q?=EC=84=B1=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rising/backend/domain/post/controller/PostController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/main/java/com/rising/backend/domain/post/controller/PostController.java b/backend/src/main/java/com/rising/backend/domain/post/controller/PostController.java index 3fab188..8663edd 100644 --- a/backend/src/main/java/com/rising/backend/domain/post/controller/PostController.java +++ b/backend/src/main/java/com/rising/backend/domain/post/controller/PostController.java @@ -43,7 +43,7 @@ public ResponseEntity create( } @GetMapping - public ResponseEntity getList(@RequestParam("enumValue") PostType postType, @PageableDefault(size = 10, sort = "createdAt", direction = Sort.Direction.DESC) final Pageable pageable) { + public ResponseEntity getList(@RequestParam(value = "type", required = false) PostType postType, @PageableDefault(size = 10, sort = "createdAt", direction = Sort.Direction.DESC) final Pageable pageable) { List result = null; if (postType == null) result = postService.pageList(pageable); From 3b4ae6af647e8c6b862930b35e4e0f367bcbde74 Mon Sep 17 00:00:00 2001 From: halin Date: Sat, 10 Jun 2023 02:15:52 +0900 Subject: [PATCH 6/6] =?UTF-8?q?hotfix:=20=EB=8C=93=EA=B8=80=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rising/backend/domain/comment/service/CommentService.java | 1 - 1 file changed, 1 deletion(-) diff --git a/backend/src/main/java/com/rising/backend/domain/comment/service/CommentService.java b/backend/src/main/java/com/rising/backend/domain/comment/service/CommentService.java index 2263912..c91cb3d 100644 --- a/backend/src/main/java/com/rising/backend/domain/comment/service/CommentService.java +++ b/backend/src/main/java/com/rising/backend/domain/comment/service/CommentService.java @@ -23,7 +23,6 @@ public class CommentService { private final CommentMapper commentMapper; public Comment createComment(CommentDto.CommentCreateRequest dto, Long userId) { - findByCommentId(dto.getParentId()); Comment entity = commentMapper.toCommentEntity(dto, userId); return commentRepository.save(entity); }