Retrieve posts according to their expiration date

This commit is contained in:
Marco Cetica 2024-01-12 11:11:45 +01:00
parent 8607f4dab6
commit 4cd54d81c1
Signed by: marco
GPG Key ID: 45060A949E90D0FD
2 changed files with 17 additions and 16 deletions

View File

@ -27,14 +27,6 @@ public class PostService {
this.passwordEncoder = passwordEncoder; 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<Post> getPosts() { List<Post> getPosts() {
return postRepository.findAll().stream().map(post -> { return postRepository.findAll().stream().map(post -> {
if(post.getUser() != null) { if(post.getUser() != null) {
@ -42,7 +34,9 @@ public class PostService {
post.getUser().setPassword(null); post.getUser().setPassword(null);
} }
return post; return post;
}).collect(Collectors.toList()); })
.filter(post -> post.getExpirationDate() == null || post.getExpirationDate().isAfter(LocalDate.now()))
.collect(Collectors.toList());
} }
Either<Error, Post> getPostById(String postId) { Either<Error, Post> getPostById(String postId) {
@ -53,6 +47,11 @@ public class PostService {
return Either.left(new Error("Cannot find post")); 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 // Conceal personal user information if available
if(post.get().getUser() != null) { if(post.get().getUser() != null) {
post.get().getUser().setId(null); post.get().getUser().setId(null);
@ -63,17 +62,17 @@ public class PostService {
} }
List<Post> getPostByTitle(String title) { List<Post> getPostByTitle(String title) {
var postList = postRepository.findPostByTitle(title); return postRepository.findPostByTitle(title).stream().map(post -> {
// Conceal user information
// Conceal user information
postList.forEach(post -> {
if(post.getUser() != null) { if(post.getUser() != null) {
post.getUser().setId(null); post.getUser().setId(null);
post.getUser().setPassword(null); post.getUser().setPassword(null);
} }
});
return postList; return post;
})
.filter(post -> post.getExpirationDate() == null || post.getExpirationDate().isAfter(LocalDate.now()))
.collect(Collectors.toList());
} }
Either<Error, String> addNewPost(Post post) { Either<Error, String> addNewPost(Post post) {

View File

@ -1,6 +1,7 @@
package com.ceticamarco.bits.user; package com.ceticamarco.bits.user;
import org.springframework.data.jpa.repository.JpaRepository; 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.jpa.repository.Query;
import org.springframework.data.repository.query.Param; import org.springframework.data.repository.query.Param;
@ -12,6 +13,7 @@ public interface UserRepository extends JpaRepository<User, String> {
@Query("SELECT u FROM User u WHERE u.username = :username") @Query("SELECT u FROM User u WHERE u.username = :username")
Optional<User> findUserByUsername(@Param("username") String username); Optional<User> findUserByUsername(@Param("username") String username);
@Modifying
void deleteUserByEmail(String email); void deleteUserByEmail(String email);
} }