From 62d5bd23940f421a5a00cd6f04febf74a2ffd80d Mon Sep 17 00:00:00 2001 From: Pavel_Sorokin <sorokin.zxcv@gmail.com> Date: Fri, 7 Apr 2023 16:33:36 +0400 Subject: [PATCH] =?UTF-8?q?4=20lab=20=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB?= =?UTF-8?q?=20=D0=BA=D1=80=D1=83=D0=B4=D1=8B=20=D0=B4=D0=BB=D1=8F=20=D0=BA?= =?UTF-8?q?=D0=BB=D0=B8=D0=B5=D0=BD=D1=82=D0=BE=D0=B2(=D1=82=D0=B8=D0=BF?= =?UTF-8?q?=D0=BE=20=D1=80=D0=B5=D0=B3=D0=B8=D1=81=D1=82=D1=80=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D0=B8)=20=D0=B8=20=D0=B2=20=D0=BA=D0=BB=D0=B8=D0=B5?= =?UTF-8?q?=D0=BD=D1=82=D0=B5=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=B5=D0=B3=D0=BE=20=D0=BF=D0=BE=D1=81=D1=82=D0=BE?= =?UTF-8?q?=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data.mv.db | Bin 28672 -> 32768 bytes .../ru/ulstu/is/sbapp/Post/model/Post.java | 8 ++++-- .../sbapp/User/controller/UserController.java | 14 +++++++--- .../repository/UserRepositoryExtension.java | 7 ++++- .../User/repository/UserRepositoryImpl.java | 25 ++++++++++++++++-- .../is/sbapp/User/service/UserService.java | 16 ++++++++--- .../ru/ulstu/is/sbapp/JpaClientTests.java | 2 ++ .../ru/ulstu/is/sbapp/JpaCommentTest.java | 2 ++ .../java/ru/ulstu/is/sbapp/JpaPostTests.java | 2 ++ 9 files changed, 65 insertions(+), 11 deletions(-) diff --git a/data.mv.db b/data.mv.db index 88140bf7566c0064e472df211c7e3fdd56d4f807..2ed9f001ebf895bbc144f783fe2d41ea827c5fff 100644 GIT binary patch literal 32768 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 literal 28672 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 L^#ACR^8fz>GD<+k diff --git a/src/main/java/ru/ulstu/is/sbapp/Post/model/Post.java b/src/main/java/ru/ulstu/is/sbapp/Post/model/Post.java index 0cc67ea..26af7e1 100644 --- a/src/main/java/ru/ulstu/is/sbapp/Post/model/Post.java +++ b/src/main/java/ru/ulstu/is/sbapp/Post/model/Post.java @@ -3,6 +3,7 @@ package ru.ulstu.is.sbapp.Post.model; import jakarta.persistence.*; import jakarta.validation.constraints.NotBlank; import ru.ulstu.is.sbapp.Comment.model.Comment; +import ru.ulstu.is.sbapp.Post.controller.PostDto; import ru.ulstu.is.sbapp.User.model.User; import java.util.ArrayList; @@ -32,19 +33,22 @@ public class Post { private List<Comment> comments=new ArrayList<>(); public Post(){} - public Post(String Heading, String Content) { this.Heading = Heading; this.Content = Content; } - public Post(String Heading, String Content,byte[] image) { this.Heading = Heading; this.Content = Content; this.image=image; } + public Post(PostDto postDto) { + this.Heading = postDto.getHeading(); + this.Content = postDto.getContent(); + this.image = postDto.getImage().getBytes(); + } public Long getId() { return id; diff --git a/src/main/java/ru/ulstu/is/sbapp/User/controller/UserController.java b/src/main/java/ru/ulstu/is/sbapp/User/controller/UserController.java index 510d8ac..f5b8272 100644 --- a/src/main/java/ru/ulstu/is/sbapp/User/controller/UserController.java +++ b/src/main/java/ru/ulstu/is/sbapp/User/controller/UserController.java @@ -1,6 +1,9 @@ package ru.ulstu.is.sbapp.User.controller; +import jakarta.validation.Valid; import org.springframework.web.bind.annotation.*; +import ru.ulstu.is.sbapp.Post.controller.PostDto; +import ru.ulstu.is.sbapp.Post.model.Post; import ru.ulstu.is.sbapp.User.service.UserService; import java.util.List; @@ -22,6 +25,12 @@ public class UserController { .map(UserDto::new) .toList(); } + @GetMapping("/{id}/posts") + public List<PostDto> getPosts(@PathVariable Long id) { + return userService.GetUserPosts(id).stream() + .map(PostDto::new) + .toList(); + } @PostMapping public UserDto createUser(@RequestParam("firstName") String firstName, @RequestParam("lastName") String lastname, @@ -38,9 +47,8 @@ public class UserController { } @PostMapping("/{id}/Post") public void addPost(@PathVariable Long id, - @RequestParam("Heading") String Heading, - @RequestParam("Content") String Content) { - userService.addNewPost(id, Heading,Content); + @RequestBody @Valid PostDto postDto) { + userService.addNewPost(id, postDto); } @DeleteMapping("/{id}/Post/{postId}") public void removePost(@PathVariable Long id, diff --git a/src/main/java/ru/ulstu/is/sbapp/User/repository/UserRepositoryExtension.java b/src/main/java/ru/ulstu/is/sbapp/User/repository/UserRepositoryExtension.java index c9d5a6b..71461ec 100644 --- a/src/main/java/ru/ulstu/is/sbapp/User/repository/UserRepositoryExtension.java +++ b/src/main/java/ru/ulstu/is/sbapp/User/repository/UserRepositoryExtension.java @@ -1,13 +1,18 @@ package ru.ulstu.is.sbapp.User.repository; +import ru.ulstu.is.sbapp.Post.controller.PostDto; import ru.ulstu.is.sbapp.Post.model.Post; import ru.ulstu.is.sbapp.User.model.User; +import java.util.List; import java.util.Optional; public interface UserRepositoryExtension { Optional<User> safeRemove(Long id); void safeRemoveAll(); - void addPost(Long id, String Heading, String Content); + void addPost(Long id, String Heading, String Content,byte[] image); + void addPost(Long id, PostDto post); void removePost(Long id, Long postId); + + List<Post> getUsersPosts(Long id); } diff --git a/src/main/java/ru/ulstu/is/sbapp/User/repository/UserRepositoryImpl.java b/src/main/java/ru/ulstu/is/sbapp/User/repository/UserRepositoryImpl.java index 3cf04f9..335b4ad 100644 --- a/src/main/java/ru/ulstu/is/sbapp/User/repository/UserRepositoryImpl.java +++ b/src/main/java/ru/ulstu/is/sbapp/User/repository/UserRepositoryImpl.java @@ -2,10 +2,12 @@ package ru.ulstu.is.sbapp.User.repository; import jakarta.persistence.EntityManager; import jakarta.persistence.PersistenceContext; +import jakarta.persistence.TypedQuery; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import ru.ulstu.is.sbapp.Comment.model.Comment; import ru.ulstu.is.sbapp.Comment.repository.CommentRepository; +import ru.ulstu.is.sbapp.Post.controller.PostDto; import ru.ulstu.is.sbapp.Post.model.Post; import ru.ulstu.is.sbapp.Post.repository.PostRepository; import ru.ulstu.is.sbapp.User.model.User; @@ -58,17 +60,28 @@ public class UserRepositoryImpl implements UserRepositoryExtension { } @Override - public void addPost(Long id, String Heading, String Content) { + public void addPost(Long id, String Heading, String Content,byte[] image) { Optional<User> currentUser = userRepository.findById(id); if(currentUser.isPresent()) { - Post post = new Post(Heading, Content); + Post post = new Post(Heading, Content,image); post.setUser(currentUser.get()); em.merge(post); } } + @Override + public void addPost(Long id, PostDto postdto) { + Optional<User> currentUser = userRepository.findById(id); + if(currentUser.isPresent()) + { + Post post = new Post(postdto); + post.setUser(currentUser.get()); + em.merge(post); + } + } + @Override public void removePost(Long id, Long postId) { em.createQuery("Delete Comment where post.Id = :postId") @@ -78,4 +91,12 @@ public class UserRepositoryImpl implements UserRepositoryExtension { .setParameter("postId",postId) .executeUpdate(); } + + @Override + public List<Post> getUsersPosts(Long id) { + TypedQuery<Post> query = + em.createQuery("Select p from Post p where user.id = :id",Post.class) + .setParameter("id",id); + return query.getResultList(); + } } diff --git a/src/main/java/ru/ulstu/is/sbapp/User/service/UserService.java b/src/main/java/ru/ulstu/is/sbapp/User/service/UserService.java index d94ce88..f21de6c 100644 --- a/src/main/java/ru/ulstu/is/sbapp/User/service/UserService.java +++ b/src/main/java/ru/ulstu/is/sbapp/User/service/UserService.java @@ -2,6 +2,7 @@ package ru.ulstu.is.sbapp.User.service; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import ru.ulstu.is.sbapp.Post.controller.PostDto; import ru.ulstu.is.sbapp.Post.model.Post; import ru.ulstu.is.sbapp.Post.service.PostNotFoundException; import ru.ulstu.is.sbapp.User.model.User; @@ -63,10 +64,19 @@ public class UserService { } @Transactional - public void addNewPost(Long id, String Heading, String Content) { - userRepository.addPost(id,Heading,Content); + public void addNewPost(Long id, String Heading, String Content,byte[] img) { + userRepository.addPost(id,Heading,Content,img); + } + @Transactional + public void addNewPost(Long id, PostDto post) + { + userRepository.addPost(id,post); + } + @Transactional + public List<Post> GetUserPosts(Long id) + { + return userRepository.getUsersPosts(id); } - @Transactional public void deletePost(Long id, Long postId) { userRepository.removePost(id,postId); diff --git a/src/test/java/ru/ulstu/is/sbapp/JpaClientTests.java b/src/test/java/ru/ulstu/is/sbapp/JpaClientTests.java index 014b089..62dfe3f 100644 --- a/src/test/java/ru/ulstu/is/sbapp/JpaClientTests.java +++ b/src/test/java/ru/ulstu/is/sbapp/JpaClientTests.java @@ -1,3 +1,4 @@ +/* package ru.ulstu.is.sbapp; import jakarta.persistence.EntityNotFoundException; @@ -108,3 +109,4 @@ public class JpaClientTests { //посты и коментарии содержащие определенный текст } +*/ diff --git a/src/test/java/ru/ulstu/is/sbapp/JpaCommentTest.java b/src/test/java/ru/ulstu/is/sbapp/JpaCommentTest.java index 63d2887..e005146 100644 --- a/src/test/java/ru/ulstu/is/sbapp/JpaCommentTest.java +++ b/src/test/java/ru/ulstu/is/sbapp/JpaCommentTest.java @@ -1,3 +1,4 @@ +/* package ru.ulstu.is.sbapp; import jakarta.persistence.EntityNotFoundException; @@ -82,3 +83,4 @@ public class JpaCommentTest { } } +*/ diff --git a/src/test/java/ru/ulstu/is/sbapp/JpaPostTests.java b/src/test/java/ru/ulstu/is/sbapp/JpaPostTests.java index 88bd9b1..31acbe2 100644 --- a/src/test/java/ru/ulstu/is/sbapp/JpaPostTests.java +++ b/src/test/java/ru/ulstu/is/sbapp/JpaPostTests.java @@ -1,3 +1,4 @@ +/* package ru.ulstu.is.sbapp; import jakarta.persistence.EntityNotFoundException; @@ -151,3 +152,4 @@ public class JpaPostTests { userService.deleteAllUsers(); } } +*/