From 4cd54d81c1fedfa585882f51bb360b4596ca8a50 Mon Sep 17 00:00:00 2001 From: Marco Cetica Date: Fri, 12 Jan 2024 11:11:45 +0100 Subject: [PATCH] Retrieve posts according to their expiration date --- .../ceticamarco/bits/post/PostService.java | 29 +++++++++---------- .../ceticamarco/bits/user/UserRepository.java | 4 ++- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/ceticamarco/bits/post/PostService.java b/src/main/java/com/ceticamarco/bits/post/PostService.java index 066c0f6..635f2a6 100644 --- a/src/main/java/com/ceticamarco/bits/post/PostService.java +++ b/src/main/java/com/ceticamarco/bits/post/PostService.java @@ -27,14 +27,6 @@ public class PostService { this.passwordEncoder = passwordEncoder; } - private boolean isUserNotRegistered(User user) { - var encodedPassword = userRepository.findUserByEmail(user.getEmail()); - var rawPassword = user.getPassword(); - - // Return true if user email exists and the password matches - return encodedPassword.filter(s -> passwordEncoder.matches(rawPassword, s.getPassword())).isEmpty(); - } - List getPosts() { return postRepository.findAll().stream().map(post -> { if(post.getUser() != null) { @@ -42,7 +34,9 @@ public class PostService { post.getUser().setPassword(null); } return post; - }).collect(Collectors.toList()); + }) + .filter(post -> post.getExpirationDate() == null || post.getExpirationDate().isAfter(LocalDate.now())) + .collect(Collectors.toList()); } Either getPostById(String postId) { @@ -53,6 +47,11 @@ public class PostService { return Either.left(new Error("Cannot find post")); } + // Check if post is expired + if(post.get().getExpirationDate() != null && post.get().getExpirationDate().isBefore(LocalDate.now())) { + return Either.left(new Error("This post has expired")); + } + // Conceal personal user information if available if(post.get().getUser() != null) { post.get().getUser().setId(null); @@ -63,17 +62,17 @@ public class PostService { } List getPostByTitle(String title) { - var postList = postRepository.findPostByTitle(title); - - // Conceal user information - postList.forEach(post -> { + return postRepository.findPostByTitle(title).stream().map(post -> { + // Conceal user information if(post.getUser() != null) { post.getUser().setId(null); post.getUser().setPassword(null); } - }); - return postList; + return post; + }) + .filter(post -> post.getExpirationDate() == null || post.getExpirationDate().isAfter(LocalDate.now())) + .collect(Collectors.toList()); } Either addNewPost(Post post) { diff --git a/src/main/java/com/ceticamarco/bits/user/UserRepository.java b/src/main/java/com/ceticamarco/bits/user/UserRepository.java index e913c3f..71bd1ca 100644 --- a/src/main/java/com/ceticamarco/bits/user/UserRepository.java +++ b/src/main/java/com/ceticamarco/bits/user/UserRepository.java @@ -1,6 +1,7 @@ package com.ceticamarco.bits.user; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; @@ -12,6 +13,7 @@ public interface UserRepository extends JpaRepository { @Query("SELECT u FROM User u WHERE u.username = :username") Optional findUserByUsername(@Param("username") String username); - + + @Modifying void deleteUserByEmail(String email); } \ No newline at end of file