Eh jsp j'ai fais des trucs

This commit is contained in:
Guams 2025-01-23 21:54:29 +01:00
parent eb2f3bf151
commit f41c830970
7 changed files with 65 additions and 2 deletions

View File

@ -76,6 +76,12 @@ public class AuthorController {
.setPassword("");
}
@GetMapping("/{id}/avatar")
public byte[] getProfilePicture(@PathVariable UUID id) {
Author author = authorService.findById(id).orElseThrow(() -> new NotFoundException("Author not found"));
return author.getProfilePicture();
}
@DeleteMapping("/{id}")
public void deleteUser(@PathVariable UUID id, Authentication authentication) {
Author authorToDelete = authorService.verifyIfUserIsAuthorized(authentication, id);

View File

@ -9,6 +9,7 @@ import com.guams.review.service.AuthorService;
import com.guams.review.service.CommentService;
import com.guams.review.service.PostService;
import com.guams.review.service.mapper.Mapper;
import com.guams.review.model.dao.PostWithAuthor;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
@ -39,6 +40,11 @@ public class PostController {
return postService.list();
}
@GetMapping("authors")
public List<PostWithAuthor> listPostsWithAuthor() {
return postService.listWithAuthors();
}
@GetMapping("/{id}")
public Post findPost(@PathVariable Long id) {
return postService.findById(id).orElseThrow(() -> new NotFoundException("Post not found"));

View File

@ -31,7 +31,7 @@ public interface CommentRepository extends CrudRepository<Comment, Long> {
" JOIN comment_association ca ON ca.comment_fk = c.id" +
" JOIN post p ON p.id = ca.post_fk" +
" JOIN author a ON ca.author_fk = a.id" +
" WHERE p.id = 3")
" WHERE p.id = :postId")
List<CommentWithAuthor> getCommentsByPostId(Long postId);
@Modifying

View File

@ -1,6 +1,7 @@
package com.guams.review.model;
import com.guams.review.model.dao.Post;
import com.guams.review.model.dao.PostWithAuthor;
import org.springframework.data.jdbc.repository.query.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@ -15,5 +16,24 @@ public interface PostRepository extends CrudRepository<Post, Long> {
"from post join publication on post.id=publication.post_fk where publication.author_fk=:authorId")
List<Post> findPostsOfAuthor(UUID authorId);
@Query(value = "SELECT " +
" a.id AS author_id, " +
" a.name AS author_name, " +
" a.profile_picture AS author_profile_picture, " +
" a.role AS role, " +
" p.id AS post_id, " +
" p.description AS post_description, " +
" p.illustration AS post_illustration, " +
" p.title AS post_title, " +
" p.body AS post_body, " +
" p.category AS post_category, " +
" p.publication_date AS post_publication_date, " +
" p.is_updated AS post_is_updated " +
"FROM post p " +
" JOIN publication pub ON p.id = pub.post_fk " +
" JOIN author a ON pub.author_fk = a.id;")
List<PostWithAuthor> findPostsWithAuthors();
List<Post> findAll();
}

View File

@ -13,7 +13,7 @@ public class CommentWithAuthor {
private Long id;
private UUID authorId;
private String authorName;
private String profilePicture;
private byte[] profilePicture;
private String authorRole;
private String content;
private Timestamp commentDate;

View File

@ -0,0 +1,26 @@
package com.guams.review.model.dao;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.sql.Timestamp;
import java.util.UUID;
@Getter
@Setter
@Accessors(chain = true)
public class PostWithAuthor {
private UUID authorId;
private String authorName;
private byte[] authorProfilePicture;
private String role;
private Long postId;
private String postDescription;
private byte[] postIllustration;
private String postTitle;
private String postBody;
private String postCategory;
private Timestamp postPublicationDate;
private Boolean postIsUpdated;
}

View File

@ -4,6 +4,7 @@ package com.guams.review.service;
import com.guams.review.model.AuthorRepository;
import com.guams.review.model.dao.Post;
import com.guams.review.model.PostRepository;
import com.guams.review.model.dao.PostWithAuthor;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -27,6 +28,10 @@ public class PostService
return postRepository.findById(id);
}
public List<PostWithAuthor> listWithAuthors() {
return postRepository.findPostsWithAuthors();
}
public Post insert(Post post) {
return postRepository.save(post);
}