Refactoring
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
package com.lions.dev.dto.request.social;
|
||||
|
||||
import jakarta.validation.constraints.Size;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* DTO pour la mise à jour d'un post social.
|
||||
*
|
||||
* Utilisé dans les requêtes PUT /posts/{id} avec un body JSON
|
||||
* (content, imageUrl) envoyé par le client Flutter.
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
public class SocialPostUpdateRequestDTO {
|
||||
|
||||
@Size(max = 2000, message = "Le contenu ne peut pas dépasser 2000 caractères.")
|
||||
private String content;
|
||||
|
||||
@Size(max = 500, message = "L'URL de l'image ne peut pas dépasser 500 caractères.")
|
||||
private String imageUrl;
|
||||
|
||||
public SocialPostUpdateRequestDTO() {
|
||||
}
|
||||
}
|
||||
@@ -31,6 +31,8 @@ public class SocialPostResponseDTO {
|
||||
private int likesCount;
|
||||
private int commentsCount;
|
||||
private int sharesCount;
|
||||
/** Indique si l'utilisateur courant a liké ce post (attendu par le client Flutter). */
|
||||
private boolean isLikedByCurrentUser = false;
|
||||
|
||||
/**
|
||||
* Constructeur à partir d'une entité SocialPost (v2.0).
|
||||
@@ -51,6 +53,7 @@ public class SocialPostResponseDTO {
|
||||
this.likesCount = post.getLikesCount();
|
||||
this.commentsCount = post.getCommentsCount();
|
||||
this.sharesCount = post.getSharesCount();
|
||||
this.isLikedByCurrentUser = false; // À enrichir si on passe le userId courant (table post_likes)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.lions.dev.resource;
|
||||
|
||||
import com.lions.dev.dto.request.social.SocialPostCreateRequestDTO;
|
||||
import com.lions.dev.dto.request.social.SocialPostUpdateRequestDTO;
|
||||
import com.lions.dev.dto.response.social.SocialPostResponseDTO;
|
||||
import com.lions.dev.entity.social.SocialPost;
|
||||
import com.lions.dev.exception.UserNotFoundException;
|
||||
@@ -139,8 +140,7 @@ public class SocialPostResource {
|
||||
* Met à jour un post.
|
||||
*
|
||||
* @param postId L'ID du post
|
||||
* @param content Le nouveau contenu
|
||||
* @param imageUrl La nouvelle URL d'image (optionnel)
|
||||
* @param requestDTO Body JSON contenant content et/ou imageUrl (compatible client Flutter)
|
||||
* @return Le post mis à jour
|
||||
*/
|
||||
@PUT
|
||||
@@ -148,15 +148,24 @@ public class SocialPostResource {
|
||||
@Transactional
|
||||
@Operation(
|
||||
summary = "Mettre à jour un post",
|
||||
description = "Met à jour le contenu et/ou l'image d'un post existant")
|
||||
description = "Met à jour le contenu et/ou l'image d'un post existant (body JSON)")
|
||||
public Response updatePost(
|
||||
@PathParam("id") UUID postId,
|
||||
@QueryParam("content") String content,
|
||||
@QueryParam("imageUrl") String imageUrl) {
|
||||
SocialPostUpdateRequestDTO requestDTO) {
|
||||
LOG.info("[LOG] Mise à jour du post ID : " + postId);
|
||||
|
||||
if (requestDTO == null) {
|
||||
return Response.status(Response.Status.BAD_REQUEST)
|
||||
.entity("{\"message\": \"Body JSON requis (content, imageUrl).\"}")
|
||||
.build();
|
||||
}
|
||||
|
||||
try {
|
||||
SocialPost post = socialPostService.updatePost(postId, content, imageUrl);
|
||||
SocialPost post = socialPostService.updatePost(
|
||||
postId,
|
||||
requestDTO.getContent(),
|
||||
requestDTO.getImageUrl()
|
||||
);
|
||||
SocialPostResponseDTO responseDTO = new SocialPostResponseDTO(post);
|
||||
return Response.ok(responseDTO).build();
|
||||
} catch (IllegalArgumentException e) {
|
||||
|
||||
@@ -172,7 +172,10 @@ public class SocialPostService {
|
||||
throw new IllegalArgumentException("Post non trouvé avec l'ID : " + postId);
|
||||
}
|
||||
|
||||
// Ne pas écraser par null (mise à jour partielle / body JSON)
|
||||
if (content != null && !content.isBlank()) {
|
||||
post.setContent(content);
|
||||
}
|
||||
if (imageUrl != null) {
|
||||
post.setImageUrl(imageUrl);
|
||||
}
|
||||
|
||||
@@ -33,6 +33,6 @@ $$ LANGUAGE plpgsql;
|
||||
CREATE TRIGGER trigger_update_social_posts_updated_at
|
||||
BEFORE UPDATE ON social_posts
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION update_social_posts_updated_at();
|
||||
EXECUTE PROCEDURE update_social_posts_updated_at();
|
||||
|
||||
COMMENT ON TABLE social_posts IS 'Publications (posts) sociaux du fil AfterWork';
|
||||
|
||||
Reference in New Issue
Block a user