From ef54dfb6b6c8fa0535cfa0ff20b4d5d8bc6ee93a Mon Sep 17 00:00:00 2001 From: hej090224 Date: Tue, 30 Dec 2025 12:21:47 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EA=B2=8C=EC=8B=9C=EA=B8=80=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20=EC=8B=9C=20FK=20=EC=A0=9C=EC=95=BD=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EC=9D=B8=ED=95=9C=20=EC=98=A4=EB=A5=98=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/service/impl/AdminPostServiceImpl.java | 14 ++++++++++++++ .../comment/repository/CommentRepository.java | 7 +++++++ .../post/repository/PostImageRepository.java | 10 +++++++++- .../domain/post/repository/PostRepository.java | 4 ++++ .../postlike/repository/PostLikeRepository.java | 7 +++++++ .../domain/report/repository/ReportRepository.java | 6 ++++++ 6 files changed, 47 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/team/cklob/gami/domain/admin/service/impl/AdminPostServiceImpl.java b/src/main/java/com/team/cklob/gami/domain/admin/service/impl/AdminPostServiceImpl.java index db1273a1..cb6a9771 100644 --- a/src/main/java/com/team/cklob/gami/domain/admin/service/impl/AdminPostServiceImpl.java +++ b/src/main/java/com/team/cklob/gami/domain/admin/service/impl/AdminPostServiceImpl.java @@ -1,9 +1,13 @@ package com.team.cklob.gami.domain.admin.service.impl; import com.team.cklob.gami.domain.admin.service.AdminPostService; +import com.team.cklob.gami.domain.comment.repository.CommentRepository; import com.team.cklob.gami.domain.post.entity.Post; import com.team.cklob.gami.domain.post.exception.NotFoundPostException; +import com.team.cklob.gami.domain.post.repository.PostImageRepository; import com.team.cklob.gami.domain.post.repository.PostRepository; +import com.team.cklob.gami.domain.postlike.repository.PostLikeRepository; +import com.team.cklob.gami.domain.report.repository.ReportRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -14,12 +18,22 @@ public class AdminPostServiceImpl implements AdminPostService { private final PostRepository postRepository; + private final CommentRepository commentRepository; + private final PostImageRepository postImageRepository; + private final PostLikeRepository postLikeRepository; + private final ReportRepository reportRepository; @Override public void deletePost(Long postId) { Post post = postRepository.findById(postId) .orElseThrow(NotFoundPostException::new); + commentRepository.deleteAllByPostId(postId); + postRepository.deleteAllFromLikeTableByPostId(postId); + postImageRepository.deleteAllByPostId(postId); + postLikeRepository.deleteAllByPostId(postId); + reportRepository.deleteAllByPostId(postId); + postRepository.delete(post); } } diff --git a/src/main/java/com/team/cklob/gami/domain/comment/repository/CommentRepository.java b/src/main/java/com/team/cklob/gami/domain/comment/repository/CommentRepository.java index 2ebd6671..f5928432 100644 --- a/src/main/java/com/team/cklob/gami/domain/comment/repository/CommentRepository.java +++ b/src/main/java/com/team/cklob/gami/domain/comment/repository/CommentRepository.java @@ -2,10 +2,17 @@ import com.team.cklob.gami.domain.comment.entity.Comment; 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; import java.util.List; public interface CommentRepository extends JpaRepository { List findByPostIdOrderByCreatedAtAsc(Long postId); + + @Modifying(clearAutomatically = true, flushAutomatically = true) + @Query("delete from Comment c where c.post.id = :postId") + void deleteAllByPostId(@Param("postId") Long postId); } diff --git a/src/main/java/com/team/cklob/gami/domain/post/repository/PostImageRepository.java b/src/main/java/com/team/cklob/gami/domain/post/repository/PostImageRepository.java index 087c69c4..a0853b89 100644 --- a/src/main/java/com/team/cklob/gami/domain/post/repository/PostImageRepository.java +++ b/src/main/java/com/team/cklob/gami/domain/post/repository/PostImageRepository.java @@ -2,9 +2,17 @@ import com.team.cklob.gami.domain.post.entity.PostImage; 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; import java.util.List; public interface PostImageRepository extends JpaRepository { + List findAllByPostId(Long postId); -} \ No newline at end of file + + @Modifying(clearAutomatically = true, flushAutomatically = true) + @Query("delete from PostImage pi where pi.post.id = :postId") + void deleteAllByPostId(@Param("postId") Long postId); +} diff --git a/src/main/java/com/team/cklob/gami/domain/post/repository/PostRepository.java b/src/main/java/com/team/cklob/gami/domain/post/repository/PostRepository.java index 6a0c9899..13f15e46 100644 --- a/src/main/java/com/team/cklob/gami/domain/post/repository/PostRepository.java +++ b/src/main/java/com/team/cklob/gami/domain/post/repository/PostRepository.java @@ -39,4 +39,8 @@ select count(c) void decreaseLike(@Param("postId") Long postId); List findAllByMemberId(Long memberId); + + @Modifying(clearAutomatically = true, flushAutomatically = true) + @Query(value = "delete from `like` where post_id = :postId", nativeQuery = true) + void deleteAllFromLikeTableByPostId(@Param("postId") Long postId); } diff --git a/src/main/java/com/team/cklob/gami/domain/postlike/repository/PostLikeRepository.java b/src/main/java/com/team/cklob/gami/domain/postlike/repository/PostLikeRepository.java index 57bce36f..10607d16 100644 --- a/src/main/java/com/team/cklob/gami/domain/postlike/repository/PostLikeRepository.java +++ b/src/main/java/com/team/cklob/gami/domain/postlike/repository/PostLikeRepository.java @@ -2,6 +2,9 @@ import com.team.cklob.gami.domain.postlike.entity.PostLike; 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; import java.util.Optional; @@ -10,4 +13,8 @@ public interface PostLikeRepository extends JpaRepository { boolean existsByMemberEmailAndPost_Id(String memberEmail, Long postId); Optional findByMemberEmailAndPost_Id(String memberEmail, Long postId); + + @Modifying(clearAutomatically = true, flushAutomatically = true) + @Query("delete from PostLike pl where pl.post.id = :postId") + void deleteAllByPostId(@Param("postId") Long postId); } diff --git a/src/main/java/com/team/cklob/gami/domain/report/repository/ReportRepository.java b/src/main/java/com/team/cklob/gami/domain/report/repository/ReportRepository.java index d1313f85..8604896b 100644 --- a/src/main/java/com/team/cklob/gami/domain/report/repository/ReportRepository.java +++ b/src/main/java/com/team/cklob/gami/domain/report/repository/ReportRepository.java @@ -3,7 +3,9 @@ import com.team.cklob.gami.domain.report.entity.Report; import com.team.cklob.gami.domain.report.entity.constant.ReportType; 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; import java.util.List; @@ -22,4 +24,8 @@ boolean existsByReporterIdAndPostIdAndReportType( JOIN FETCH r.post """) List findAllWithReporterAndPost(); + + @Modifying(clearAutomatically = true, flushAutomatically = true) + @Query("delete from Report r where r.post.id = :postId") + void deleteAllByPostId(@Param("postId") Long postId); }