diff --git a/src/main/java/com/back/domain/cocktail/comment/entity/CocktailComment.java b/src/main/java/com/back/domain/cocktail/comment/entity/CocktailComment.java index 782df0b0..4676c0c7 100644 --- a/src/main/java/com/back/domain/cocktail/comment/entity/CocktailComment.java +++ b/src/main/java/com/back/domain/cocktail/comment/entity/CocktailComment.java @@ -16,7 +16,6 @@ @Entity @Getter -@Table(name = "cocktailcomment") @EntityListeners(AuditingEntityListener.class) @NoArgsConstructor(access = lombok.AccessLevel.PROTECTED) @AllArgsConstructor diff --git a/src/main/java/com/back/domain/post/category/entity/Category.java b/src/main/java/com/back/domain/post/category/entity/Category.java index 6dda2f13..33879404 100644 --- a/src/main/java/com/back/domain/post/category/entity/Category.java +++ b/src/main/java/com/back/domain/post/category/entity/Category.java @@ -1,23 +1,12 @@ package com.back.domain.post.category.entity; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.EntityListeners; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.Table; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; +import jakarta.persistence.*; +import lombok.*; import org.springframework.data.jpa.domain.support.AuditingEntityListener; @Entity @Getter @Setter -@Table(name = "category") @EntityListeners(AuditingEntityListener.class) @NoArgsConstructor(access = lombok.AccessLevel.PROTECTED) @AllArgsConstructor diff --git a/src/main/java/com/back/domain/post/comment/entity/Comment.java b/src/main/java/com/back/domain/post/comment/entity/Comment.java index 64e7f870..b8164b27 100644 --- a/src/main/java/com/back/domain/post/comment/entity/Comment.java +++ b/src/main/java/com/back/domain/post/comment/entity/Comment.java @@ -2,21 +2,8 @@ import com.back.domain.post.comment.enums.CommentStatus; import com.back.domain.post.post.entity.Post; -import com.back.domain.post.post.enums.PostStatus; import com.back.domain.user.entity.User; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.EntityListeners; -import jakarta.persistence.EnumType; -import jakarta.persistence.Enumerated; -import jakarta.persistence.FetchType; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.ManyToOne; -import jakarta.persistence.Table; -import java.time.LocalDateTime; +import jakarta.persistence.*; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; @@ -25,9 +12,10 @@ import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; +import java.time.LocalDateTime; + @Entity @Getter -@Table(name = "comment") @EntityListeners(AuditingEntityListener.class) @NoArgsConstructor(access = lombok.AccessLevel.PROTECTED) @AllArgsConstructor diff --git a/src/main/java/com/back/domain/post/post/dto/request/PostCreateRequestDto.java b/src/main/java/com/back/domain/post/post/dto/request/PostCreateRequestDto.java index e1b8a37d..54940013 100644 --- a/src/main/java/com/back/domain/post/post/dto/request/PostCreateRequestDto.java +++ b/src/main/java/com/back/domain/post/post/dto/request/PostCreateRequestDto.java @@ -12,6 +12,7 @@ public record PostCreateRequestDto( @NotBlank (message = "내용은 필수입니다.") String content, String imageUrl, + String videoUrl, List tags ) { } diff --git a/src/main/java/com/back/domain/post/post/dto/request/PostUpdateRequestDto.java b/src/main/java/com/back/domain/post/post/dto/request/PostUpdateRequestDto.java index a44e5895..65d97457 100644 --- a/src/main/java/com/back/domain/post/post/dto/request/PostUpdateRequestDto.java +++ b/src/main/java/com/back/domain/post/post/dto/request/PostUpdateRequestDto.java @@ -9,6 +9,7 @@ public record PostUpdateRequestDto( String title, String content, String imageUrl, + String videoUrl, List tags ) { } diff --git a/src/main/java/com/back/domain/post/post/dto/response/PostResponseDto.java b/src/main/java/com/back/domain/post/post/dto/response/PostResponseDto.java index c527a7b1..4f06c3a7 100644 --- a/src/main/java/com/back/domain/post/post/dto/response/PostResponseDto.java +++ b/src/main/java/com/back/domain/post/post/dto/response/PostResponseDto.java @@ -15,6 +15,7 @@ public record PostResponseDto( String title, String content, String imageUrl, + String videoUrl, List tags, Integer likeCount, Integer commentCount, @@ -32,6 +33,7 @@ public PostResponseDto(Post post) { post.getTitle(), post.getContent(), post.getImageUrl(), + post.getVideoUrl(), post.getPostTags().stream() .map(postTag -> postTag.getTag().getName()) .toList(), diff --git a/src/main/java/com/back/domain/post/post/entity/Post.java b/src/main/java/com/back/domain/post/post/entity/Post.java index 9ce65b79..a7198225 100644 --- a/src/main/java/com/back/domain/post/post/entity/Post.java +++ b/src/main/java/com/back/domain/post/post/entity/Post.java @@ -3,23 +3,7 @@ import com.back.domain.post.category.entity.Category; import com.back.domain.post.post.enums.PostStatus; import com.back.domain.user.entity.User; -import jakarta.persistence.CascadeType; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.EntityListeners; -import jakarta.persistence.EnumType; -import jakarta.persistence.Enumerated; -import jakarta.persistence.FetchType; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.ManyToOne; -import jakarta.persistence.OneToMany; -import jakarta.persistence.Table; -import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; +import jakarta.persistence.*; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; @@ -28,9 +12,12 @@ import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + @Entity @Getter -@Table(name = "post") @EntityListeners(AuditingEntityListener.class) @NoArgsConstructor(access = lombok.AccessLevel.PROTECTED) @AllArgsConstructor @@ -79,6 +66,10 @@ public class Post { @Column(name = "image_url") private String imageUrl; + // 게시글 동영상 URL + @Column(name = "video_url") + private String videoUrl; + @OneToMany(mappedBy = "post", cascade = CascadeType.ALL, orphanRemoval = true) private List postTags = new ArrayList<>(); @@ -118,6 +109,10 @@ public void updateImage(String imageUrl) { this.imageUrl = imageUrl; } + public void updateVideo(String videoUrl) { + this.videoUrl = videoUrl; + } + public void addTag(Tag tag) { PostTag postTag = PostTag.create(this, tag); this.postTags.add(postTag); diff --git a/src/main/java/com/back/domain/post/post/entity/PostLike.java b/src/main/java/com/back/domain/post/post/entity/PostLike.java index 86b1ec3d..d9cbf58b 100644 --- a/src/main/java/com/back/domain/post/post/entity/PostLike.java +++ b/src/main/java/com/back/domain/post/post/entity/PostLike.java @@ -2,32 +2,17 @@ import com.back.domain.post.post.enums.PostLikeStatus; import com.back.domain.user.entity.User; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.EntityListeners; -import jakarta.persistence.EnumType; -import jakarta.persistence.Enumerated; -import jakarta.persistence.FetchType; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.ManyToOne; -import jakarta.persistence.Table; -import jakarta.persistence.UniqueConstraint; -import java.time.LocalDateTime; -import lombok.AccessLevel; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; +import jakarta.persistence.*; +import lombok.*; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; +import java.time.LocalDateTime; + @Entity @Getter // 같은 사용자(user_id)가 같은 게시글(post_id)을 중복 추천하지 못하도록 DB 레벨에서 보장. -@Table(name = "post_like", uniqueConstraints = { +@Table(uniqueConstraints = { @UniqueConstraint(columnNames = {"post_id", "user_id"}) }) @EntityListeners(AuditingEntityListener.class) diff --git a/src/main/java/com/back/domain/post/post/entity/PostTag.java b/src/main/java/com/back/domain/post/post/entity/PostTag.java index 9a09a924..f753c846 100644 --- a/src/main/java/com/back/domain/post/post/entity/PostTag.java +++ b/src/main/java/com/back/domain/post/post/entity/PostTag.java @@ -1,15 +1,6 @@ package com.back.domain.post.post.entity; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.EntityListeners; -import jakarta.persistence.FetchType; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.ManyToOne; -import jakarta.persistence.Table; +import jakarta.persistence.*; import lombok.AccessLevel; import lombok.Builder; import lombok.Getter; @@ -18,7 +9,6 @@ @Entity @Getter -@Table(name = "post_tag") @EntityListeners(AuditingEntityListener.class) @NoArgsConstructor(access = AccessLevel.PROTECTED) public class PostTag { diff --git a/src/main/java/com/back/domain/post/post/entity/Tag.java b/src/main/java/com/back/domain/post/post/entity/Tag.java index d215e43d..91900228 100644 --- a/src/main/java/com/back/domain/post/post/entity/Tag.java +++ b/src/main/java/com/back/domain/post/post/entity/Tag.java @@ -4,16 +4,10 @@ import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.Id; -import jakarta.persistence.Table; -import lombok.AccessLevel; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; +import lombok.*; @Entity @Getter -@Table(name = "tag") @NoArgsConstructor(access = AccessLevel.PROTECTED) @AllArgsConstructor @Builder diff --git a/src/main/java/com/back/domain/post/post/service/PostService.java b/src/main/java/com/back/domain/post/post/service/PostService.java index 7f4a390a..c54d2818 100644 --- a/src/main/java/com/back/domain/post/post/service/PostService.java +++ b/src/main/java/com/back/domain/post/post/service/PostService.java @@ -50,6 +50,7 @@ public PostResponseDto createPost(PostCreateRequestDto reqBody) { .title(reqBody.title()) .content(reqBody.content()) .imageUrl(reqBody.imageUrl()) + .videoUrl(reqBody.videoUrl()) .build(); List tagNames = reqBody.tags(); @@ -114,6 +115,9 @@ public PostResponseDto updatePost(Long postId, PostUpdateRequestDto reqBody) { if (reqBody.imageUrl() != null && !reqBody.imageUrl().isBlank()) { post.updateImage(reqBody.imageUrl()); } + if (reqBody.videoUrl() != null && !reqBody.videoUrl().isBlank()) { + post.updateVideo(reqBody.videoUrl()); + } if (reqBody.tags() != null) { // 기존 태그들 삭제 post.clearTags();