From 7ec6a5fdfd7dda7c0be867a34f2dc3ffd854a6c6 Mon Sep 17 00:00:00 2001 From: Uechann Date: Tue, 12 Nov 2024 01:56:55 +0900 Subject: [PATCH 1/2] =?UTF-8?q?User,=20Post=20=EC=99=84=EB=A3=8C=20Comment?= =?UTF-8?q?=20=EC=95=84=EC=A7=81=20=EB=AF=B8=EC=99=84=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CommentController.java | 20 ++++++++ .../springhw32/controller/PostController.java | 35 +++++++++++++ .../springhw32/controller/UserController.java | 18 ++++++- .../example/springhw32/dto/CommentDto.java | 8 ++- .../com/example/springhw32/dto/PostDto.java | 14 +++++- .../com/example/springhw32/dto/UserDto.java | 8 ++- .../example/springhw32/entity/Comment.java | 17 +++++++ .../com/example/springhw32/entity/Post.java | 27 ++++++++++ .../com/example/springhw32/entity/User.java | 16 ++++++ .../repository/CommentRepository.java | 5 +- .../springhw32/repository/PostRepository.java | 9 +++- .../springhw32/repository/UserRepository.java | 5 +- .../springhw32/service/CommentService.java | 28 +++++++++++ .../springhw32/service/PostService.java | 49 +++++++++++++++++++ .../springhw32/service/UserService.java | 17 +++++++ src/main/resources/application.yml | 6 +-- 16 files changed, 272 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/example/springhw32/controller/CommentController.java b/src/main/java/com/example/springhw32/controller/CommentController.java index 0ee065d..7e95d95 100644 --- a/src/main/java/com/example/springhw32/controller/CommentController.java +++ b/src/main/java/com/example/springhw32/controller/CommentController.java @@ -1,5 +1,25 @@ package com.example.springhw32.controller; +import com.example.springhw32.dto.CommentDto; +import com.example.springhw32.service.CommentService; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequiredArgsConstructor +@RequestMapping("posts") public class CommentController { + private final CommentService commentService; + + //댓글 작성 + @PostMapping("/comments") + public CommentDto addComment(@ModelAttribute CommentDto commentDto, @RequestParam Long postId) { + + } + + //특정 게시물에 달린 모든 댓글 조회 + @GetMapping("/postid") + public CommentDto getCommentByPost(@PathVariable Long postId) { + } } diff --git a/src/main/java/com/example/springhw32/controller/PostController.java b/src/main/java/com/example/springhw32/controller/PostController.java index 317774b..b415c1d 100644 --- a/src/main/java/com/example/springhw32/controller/PostController.java +++ b/src/main/java/com/example/springhw32/controller/PostController.java @@ -1,5 +1,40 @@ package com.example.springhw32.controller; +import com.example.springhw32.dto.PostDto; +import com.example.springhw32.service.PostService; +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/posts") public class PostController { + private final PostService postService; + + //글작성 + @PostMapping("") + public PostDto save(PostDto postDto) { + return postService.save(postDto); + } + + //최신순으로 글 조회 + @GetMapping("") + public List findAllByOrder() { + return postService.findAllByOrderByCreatedAtDesc(); + } + + //작성자 글 조회 + @GetMapping("/writer") + public List findByWriter(@PathVariable Long userId) { + return postService.findAllByWriter(userId); + } + //댓글 많은 순 조회 + @GetMapping("/comments") + public List findByCommentNumberDesc() { + return postService.findAllByCommentNumberDesc(); + } } diff --git a/src/main/java/com/example/springhw32/controller/UserController.java b/src/main/java/com/example/springhw32/controller/UserController.java index 3b321ac..27a6633 100644 --- a/src/main/java/com/example/springhw32/controller/UserController.java +++ b/src/main/java/com/example/springhw32/controller/UserController.java @@ -1,5 +1,21 @@ package com.example.springhw32.controller; -public class UserController { +import com.example.springhw32.dto.UserDto; +import com.example.springhw32.service.UserService; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +@RestController +@RequiredArgsConstructor +@RequestMapping("/users") +public class UserController { + private final UserService userService; + //회원가입 + @PostMapping("/signup") + public UserDto signup(@ModelAttribute UserDto userDto) { + return userService.signup(userDto); + } } diff --git a/src/main/java/com/example/springhw32/dto/CommentDto.java b/src/main/java/com/example/springhw32/dto/CommentDto.java index a9d04fa..725cc43 100644 --- a/src/main/java/com/example/springhw32/dto/CommentDto.java +++ b/src/main/java/com/example/springhw32/dto/CommentDto.java @@ -1,5 +1,11 @@ package com.example.springhw32.dto; -public class CommentDto { +import com.example.springhw32.entity.Post; +import lombok.Getter; +import lombok.Setter; +@Getter +@Setter +public class CommentDto { + private String text; } diff --git a/src/main/java/com/example/springhw32/dto/PostDto.java b/src/main/java/com/example/springhw32/dto/PostDto.java index cde1eda..303cd4f 100644 --- a/src/main/java/com/example/springhw32/dto/PostDto.java +++ b/src/main/java/com/example/springhw32/dto/PostDto.java @@ -1,5 +1,17 @@ package com.example.springhw32.dto; -public class PostDto { +import com.example.springhw32.entity.User; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDateTime; +@Getter +@Setter +public class PostDto { + private Long userId; + private String title; + private String content; + private LocalDateTime createdAt; + private int commentNumber; } diff --git a/src/main/java/com/example/springhw32/dto/UserDto.java b/src/main/java/com/example/springhw32/dto/UserDto.java index cbbbe2e..f71ccd4 100644 --- a/src/main/java/com/example/springhw32/dto/UserDto.java +++ b/src/main/java/com/example/springhw32/dto/UserDto.java @@ -1,5 +1,11 @@ package com.example.springhw32.dto; -public class UserDto { +import lombok.Getter; +import lombok.Setter; +@Getter +@Setter +public class UserDto { + private String username; + private String password; } diff --git a/src/main/java/com/example/springhw32/entity/Comment.java b/src/main/java/com/example/springhw32/entity/Comment.java index be818a0..f7a8b23 100644 --- a/src/main/java/com/example/springhw32/entity/Comment.java +++ b/src/main/java/com/example/springhw32/entity/Comment.java @@ -1,5 +1,22 @@ package com.example.springhw32.entity; +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; +import org.apache.catalina.users.GenericRole; + +@Entity +@Getter +@Setter public class Comment { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long commentId; + + @ManyToOne + @JoinColumn(name = "postId") + private Post post; + + private String text; } diff --git a/src/main/java/com/example/springhw32/entity/Post.java b/src/main/java/com/example/springhw32/entity/Post.java index 38b5e81..b8596b8 100644 --- a/src/main/java/com/example/springhw32/entity/Post.java +++ b/src/main/java/com/example/springhw32/entity/Post.java @@ -1,5 +1,32 @@ package com.example.springhw32.entity; +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDateTime; + +@Entity +@Getter +@Setter public class Post { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long postId; + + @Column + @ManyToOne + @JoinColumn(name = "userId") + private User user; + + @Column(nullable = false) + private String title; + + @Column(nullable = false) + private String content; + + private int commentNumber; + + private LocalDateTime createdAt; } diff --git a/src/main/java/com/example/springhw32/entity/User.java b/src/main/java/com/example/springhw32/entity/User.java index 447989d..c56b4cc 100644 --- a/src/main/java/com/example/springhw32/entity/User.java +++ b/src/main/java/com/example/springhw32/entity/User.java @@ -1,5 +1,21 @@ package com.example.springhw32.entity; +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Getter +@Setter public class User { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long userId; + + @Column(nullable = false, unique = true) + private String username; + + @Column(nullable = false) + private String password; } diff --git a/src/main/java/com/example/springhw32/repository/CommentRepository.java b/src/main/java/com/example/springhw32/repository/CommentRepository.java index 83dcd99..5a94b3d 100644 --- a/src/main/java/com/example/springhw32/repository/CommentRepository.java +++ b/src/main/java/com/example/springhw32/repository/CommentRepository.java @@ -1,5 +1,8 @@ package com.example.springhw32.repository; -public interface CommentRepository { +import com.example.springhw32.entity.Comment; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface CommentRepository extends JpaRepository { } diff --git a/src/main/java/com/example/springhw32/repository/PostRepository.java b/src/main/java/com/example/springhw32/repository/PostRepository.java index 14b8546..6f2e555 100644 --- a/src/main/java/com/example/springhw32/repository/PostRepository.java +++ b/src/main/java/com/example/springhw32/repository/PostRepository.java @@ -1,5 +1,12 @@ package com.example.springhw32.repository; -public interface PostRepository { +import com.example.springhw32.entity.Post; +import org.springframework.data.jpa.repository.JpaRepository; +import java.util.List; + +public interface PostRepository extends JpaRepository { + public List findAllOrderByCreatedAtDesc(); + public List findByUserId(Long userId); + public List findByCommentNumberDesc(); } diff --git a/src/main/java/com/example/springhw32/repository/UserRepository.java b/src/main/java/com/example/springhw32/repository/UserRepository.java index 877a215..fd09b07 100644 --- a/src/main/java/com/example/springhw32/repository/UserRepository.java +++ b/src/main/java/com/example/springhw32/repository/UserRepository.java @@ -1,5 +1,8 @@ package com.example.springhw32.repository; -public interface UserRepository { +import com.example.springhw32.entity.User; +import org.springframework.data.jpa.repository.JpaRepository; +public interface UserRepository extends JpaRepository { + public User findByUserId(Long userId); } diff --git a/src/main/java/com/example/springhw32/service/CommentService.java b/src/main/java/com/example/springhw32/service/CommentService.java index ec0c937..b177c35 100644 --- a/src/main/java/com/example/springhw32/service/CommentService.java +++ b/src/main/java/com/example/springhw32/service/CommentService.java @@ -1,5 +1,33 @@ package com.example.springhw32.service; +import com.example.springhw32.dto.CommentDto; +import com.example.springhw32.entity.Comment; +import com.example.springhw32.entity.Post; +import com.example.springhw32.repository.CommentRepository; +import com.example.springhw32.repository.PostRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor public class CommentService { + private final CommentRepository commentRepository; + private final PostRepository postRepository; + + //댓글 작성 + public CommentDto addComment(CommentDto commentDto, Long postId) { + Post post = postRepository.findById(postId).orElseThrow(); + + Comment comment = new Comment(); + comment.setPost(post); + comment.setText(commentDto.getText()); + commentRepository.save(comment); + + post.setCommentNumber(post.getCommentNumber() + 1); + postRepository.save(post); + + return commentDto; + } + //특정 개시물에 달린 모든 댓글 조회 } diff --git a/src/main/java/com/example/springhw32/service/PostService.java b/src/main/java/com/example/springhw32/service/PostService.java index b029d55..db07df8 100644 --- a/src/main/java/com/example/springhw32/service/PostService.java +++ b/src/main/java/com/example/springhw32/service/PostService.java @@ -1,5 +1,54 @@ package com.example.springhw32.service; +import com.example.springhw32.dto.PostDto; +import com.example.springhw32.entity.Post; +import com.example.springhw32.repository.PostRepository; +import com.example.springhw32.repository.UserRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.PostMapping; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +@Service +@RequiredArgsConstructor public class PostService { + private final PostRepository postRepository; + private final UserRepository userRepository; + + //글 작성 + public PostDto save(PostDto postDto) { + Post post = new Post(); + post.setTitle(postDto.getTitle()); + post.setContent(postDto.getContent()); + post.setUser(userRepository.findByUserId(postDto.getUserId())); + post.setCommentNumber(0); + post.setCreatedAt(LocalDateTime.now()); + postRepository.save(post); + return postDto; + } + + //최신순으로 글 조회 + public List findAllByOrderByCreatedAtDesc() { + List postDtos = postRepository.findAllOrderByCreatedAtDesc().stream() + .map(post -> new PostDto()).collect(Collectors.toList()); + return postDtos; + } + + //특정 회원이 작성한 글 조회 + public List findAllByWriter(Long userId) { + List postDtos = postRepository.findByUserId(userId).stream() + .map(post -> new PostDto()).collect(Collectors.toList()); + return postDtos; + } + //댓글이 많은 순으로 정렬 조회 + public List findAllByCommentNumberDesc() { + List postDtos = postRepository.findByCommentNumberDesc().stream() + .map(post -> new PostDto()).collect(Collectors.toList()); + return postDtos; + } } diff --git a/src/main/java/com/example/springhw32/service/UserService.java b/src/main/java/com/example/springhw32/service/UserService.java index 8badccf..9beba75 100644 --- a/src/main/java/com/example/springhw32/service/UserService.java +++ b/src/main/java/com/example/springhw32/service/UserService.java @@ -1,5 +1,22 @@ package com.example.springhw32.service; +import com.example.springhw32.dto.UserDto; +import com.example.springhw32.entity.User; +import com.example.springhw32.repository.UserRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor public class UserService { + private final UserRepository userRepository; + //회원가입 + public UserDto signup(UserDto userDto) { + User user = new User(); + user.setUsername(userDto.getUsername()); + user.setPassword(userDto.getPassword()); + userRepository.save(user); + return userDto; + } } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 9b78d0c..5f39bc2 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,8 +1,8 @@ spring: datasource: - url: jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8 - username: your_username - password: your_password + url: jdbc:mysql://localhost:3306/demo?useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8 + username: root + password: na58745874@ driver-class-name: com.mysql.cj.jdbc.Driver jpa: From 0c22bfc04b7a4d700d4c349ef855809ca8ee788c Mon Sep 17 00:00:00 2001 From: Uechann Date: Tue, 12 Nov 2024 18:21:33 +0900 Subject: [PATCH 2/2] =?UTF-8?q?hw3-2=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CommentController.java | 12 +++++---- .../springhw32/controller/PostController.java | 14 +++++----- .../springhw32/controller/UserController.java | 3 +-- .../com/example/springhw32/dto/PostDto.java | 1 - .../example/springhw32/entity/Comment.java | 3 +-- .../com/example/springhw32/entity/Post.java | 4 +-- .../com/example/springhw32/entity/User.java | 2 +- .../repository/CommentRepository.java | 4 ++- .../springhw32/repository/PostRepository.java | 6 ++--- .../springhw32/repository/UserRepository.java | 3 ++- .../springhw32/service/CommentService.java | 14 ++++++++++ .../springhw32/service/PostService.java | 27 ++++++++++++------- .../springhw32/service/UserService.java | 1 + 13 files changed, 59 insertions(+), 35 deletions(-) diff --git a/src/main/java/com/example/springhw32/controller/CommentController.java b/src/main/java/com/example/springhw32/controller/CommentController.java index 7e95d95..b67d55a 100644 --- a/src/main/java/com/example/springhw32/controller/CommentController.java +++ b/src/main/java/com/example/springhw32/controller/CommentController.java @@ -5,21 +5,23 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @RequiredArgsConstructor -@RequestMapping("posts") +@RequestMapping("/posts") public class CommentController { private final CommentService commentService; //댓글 작성 @PostMapping("/comments") public CommentDto addComment(@ModelAttribute CommentDto commentDto, @RequestParam Long postId) { - + return commentService.addComment(commentDto, postId); } //특정 게시물에 달린 모든 댓글 조회 - @GetMapping("/postid") - public CommentDto getCommentByPost(@PathVariable Long postId) { - + @GetMapping("/comments/postid") + public List getCommentByPostId(@PathVariable Long postId) { + return commentService.getCommentByPostId(postId); } } diff --git a/src/main/java/com/example/springhw32/controller/PostController.java b/src/main/java/com/example/springhw32/controller/PostController.java index b415c1d..1956a70 100644 --- a/src/main/java/com/example/springhw32/controller/PostController.java +++ b/src/main/java/com/example/springhw32/controller/PostController.java @@ -16,25 +16,25 @@ public class PostController { //글작성 @PostMapping("") - public PostDto save(PostDto postDto) { - return postService.save(postDto); + public PostDto save(@ModelAttribute PostDto postDto, Long userId) { + return postService.save(postDto, userId); } //최신순으로 글 조회 @GetMapping("") - public List findAllByOrder() { + public List findAllByOrderByCreatedAtDesc() { return postService.findAllByOrderByCreatedAtDesc(); } //작성자 글 조회 - @GetMapping("/writer") - public List findByWriter(@PathVariable Long userId) { + @GetMapping("/{writer}") + public List findAllByWriter(@PathVariable("writer") Long userId) { return postService.findAllByWriter(userId); } //댓글 많은 순 조회 @GetMapping("/comments") - public List findByCommentNumberDesc() { - return postService.findAllByCommentNumberDesc(); + public List findAllByOrderByCommentNumberDesc() { + return postService.findAllByOrderByCommentNumberDesc(); } } diff --git a/src/main/java/com/example/springhw32/controller/UserController.java b/src/main/java/com/example/springhw32/controller/UserController.java index 27a6633..b1a2814 100644 --- a/src/main/java/com/example/springhw32/controller/UserController.java +++ b/src/main/java/com/example/springhw32/controller/UserController.java @@ -10,11 +10,10 @@ @RestController @RequiredArgsConstructor -@RequestMapping("/users") public class UserController { private final UserService userService; //회원가입 - @PostMapping("/signup") + @PostMapping("/users") public UserDto signup(@ModelAttribute UserDto userDto) { return userService.signup(userDto); } diff --git a/src/main/java/com/example/springhw32/dto/PostDto.java b/src/main/java/com/example/springhw32/dto/PostDto.java index 303cd4f..58cd75c 100644 --- a/src/main/java/com/example/springhw32/dto/PostDto.java +++ b/src/main/java/com/example/springhw32/dto/PostDto.java @@ -9,7 +9,6 @@ @Getter @Setter public class PostDto { - private Long userId; private String title; private String content; private LocalDateTime createdAt; diff --git a/src/main/java/com/example/springhw32/entity/Comment.java b/src/main/java/com/example/springhw32/entity/Comment.java index f7a8b23..dda7ff4 100644 --- a/src/main/java/com/example/springhw32/entity/Comment.java +++ b/src/main/java/com/example/springhw32/entity/Comment.java @@ -12,10 +12,9 @@ public class Comment { @Id @GeneratedValue(strategy = GenerationType.AUTO) - private Long commentId; + private Long Id; @ManyToOne - @JoinColumn(name = "postId") private Post post; private String text; diff --git a/src/main/java/com/example/springhw32/entity/Post.java b/src/main/java/com/example/springhw32/entity/Post.java index b8596b8..b108bcb 100644 --- a/src/main/java/com/example/springhw32/entity/Post.java +++ b/src/main/java/com/example/springhw32/entity/Post.java @@ -13,11 +13,9 @@ public class Post { @Id @GeneratedValue(strategy = GenerationType.AUTO) - private Long postId; + private Long Id; - @Column @ManyToOne - @JoinColumn(name = "userId") private User user; @Column(nullable = false) diff --git a/src/main/java/com/example/springhw32/entity/User.java b/src/main/java/com/example/springhw32/entity/User.java index c56b4cc..7274db0 100644 --- a/src/main/java/com/example/springhw32/entity/User.java +++ b/src/main/java/com/example/springhw32/entity/User.java @@ -11,7 +11,7 @@ public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) - private Long userId; + private Long Id; @Column(nullable = false, unique = true) private String username; diff --git a/src/main/java/com/example/springhw32/repository/CommentRepository.java b/src/main/java/com/example/springhw32/repository/CommentRepository.java index 5a94b3d..321fd87 100644 --- a/src/main/java/com/example/springhw32/repository/CommentRepository.java +++ b/src/main/java/com/example/springhw32/repository/CommentRepository.java @@ -3,6 +3,8 @@ import com.example.springhw32.entity.Comment; import org.springframework.data.jpa.repository.JpaRepository; -public interface CommentRepository extends JpaRepository { +import java.util.List; +public interface CommentRepository extends JpaRepository { + public List findAllByPostId(Long postId); } diff --git a/src/main/java/com/example/springhw32/repository/PostRepository.java b/src/main/java/com/example/springhw32/repository/PostRepository.java index 6f2e555..5fe63f2 100644 --- a/src/main/java/com/example/springhw32/repository/PostRepository.java +++ b/src/main/java/com/example/springhw32/repository/PostRepository.java @@ -6,7 +6,7 @@ import java.util.List; public interface PostRepository extends JpaRepository { - public List findAllOrderByCreatedAtDesc(); - public List findByUserId(Long userId); - public List findByCommentNumberDesc(); + public List findAllByOrderByCreatedAtDesc(); + public List findAllByUserId(Long userId); + public List findAllByOrderByCommentNumberDesc(); } diff --git a/src/main/java/com/example/springhw32/repository/UserRepository.java b/src/main/java/com/example/springhw32/repository/UserRepository.java index fd09b07..ae8c6b0 100644 --- a/src/main/java/com/example/springhw32/repository/UserRepository.java +++ b/src/main/java/com/example/springhw32/repository/UserRepository.java @@ -3,6 +3,7 @@ import com.example.springhw32.entity.User; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.Optional; + public interface UserRepository extends JpaRepository { - public User findByUserId(Long userId); } diff --git a/src/main/java/com/example/springhw32/service/CommentService.java b/src/main/java/com/example/springhw32/service/CommentService.java index b177c35..afd4e73 100644 --- a/src/main/java/com/example/springhw32/service/CommentService.java +++ b/src/main/java/com/example/springhw32/service/CommentService.java @@ -8,6 +8,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.List; +import java.util.stream.Collectors; + @Service @RequiredArgsConstructor public class CommentService { @@ -30,4 +33,15 @@ public CommentDto addComment(CommentDto commentDto, Long postId) { } //특정 개시물에 달린 모든 댓글 조회 + public List getCommentByPostId(Long postId) { + List commentDtos = commentRepository.findAllByPostId(postId).stream() + .map(this::EntityToDto).collect(Collectors.toList()); + return commentDtos; + } + + private CommentDto EntityToDto(Comment comment) { + CommentDto commentDto = new CommentDto(); + commentDto.setText(comment.getText()); + return commentDto; + } } diff --git a/src/main/java/com/example/springhw32/service/PostService.java b/src/main/java/com/example/springhw32/service/PostService.java index db07df8..07cc2e0 100644 --- a/src/main/java/com/example/springhw32/service/PostService.java +++ b/src/main/java/com/example/springhw32/service/PostService.java @@ -20,11 +20,11 @@ public class PostService { private final UserRepository userRepository; //글 작성 - public PostDto save(PostDto postDto) { + public PostDto save(PostDto postDto, Long userId) { Post post = new Post(); post.setTitle(postDto.getTitle()); post.setContent(postDto.getContent()); - post.setUser(userRepository.findByUserId(postDto.getUserId())); + post.setUser(userRepository.findById(userId).orElse(null)); post.setCommentNumber(0); post.setCreatedAt(LocalDateTime.now()); postRepository.save(post); @@ -33,22 +33,31 @@ public PostDto save(PostDto postDto) { //최신순으로 글 조회 public List findAllByOrderByCreatedAtDesc() { - List postDtos = postRepository.findAllOrderByCreatedAtDesc().stream() - .map(post -> new PostDto()).collect(Collectors.toList()); + List postDtos = postRepository.findAllByOrderByCreatedAtDesc().stream() + .map(this::EntityToDto).collect(Collectors.toList()); return postDtos; } //특정 회원이 작성한 글 조회 public List findAllByWriter(Long userId) { - List postDtos = postRepository.findByUserId(userId).stream() - .map(post -> new PostDto()).collect(Collectors.toList()); + List postDtos = postRepository.findAllByUserId(userId).stream() + .map(this::EntityToDto).collect(Collectors.toList()); return postDtos; } //댓글이 많은 순으로 정렬 조회 - public List findAllByCommentNumberDesc() { - List postDtos = postRepository.findByCommentNumberDesc().stream() - .map(post -> new PostDto()).collect(Collectors.toList()); + public List findAllByOrderByCommentNumberDesc() { + List postDtos = postRepository.findAllByOrderByCommentNumberDesc().stream() + .map(this::EntityToDto).collect(Collectors.toList()); return postDtos; } + + private PostDto EntityToDto(Post post) { + PostDto postDto = new PostDto(); + postDto.setTitle(post.getTitle()); + postDto.setContent(post.getContent()); + postDto.setCreatedAt(post.getCreatedAt()); + postDto.setCommentNumber(post.getCommentNumber()); + return postDto; + } } diff --git a/src/main/java/com/example/springhw32/service/UserService.java b/src/main/java/com/example/springhw32/service/UserService.java index 9beba75..6672aef 100644 --- a/src/main/java/com/example/springhw32/service/UserService.java +++ b/src/main/java/com/example/springhw32/service/UserService.java @@ -19,4 +19,5 @@ public UserDto signup(UserDto userDto) { userRepository.save(user); return userDto; } + }