diff --git a/src/main/java/org/harang/server/controller/PostController.java b/src/main/java/org/harang/server/controller/PostController.java index 0c021d2..ff2a8e0 100644 --- a/src/main/java/org/harang/server/controller/PostController.java +++ b/src/main/java/org/harang/server/controller/PostController.java @@ -11,7 +11,6 @@ import org.harang.server.dto.type.SuccessMessage; import org.harang.server.service.PostService; import org.springframework.web.bind.annotation.*; - import java.util.List; @Slf4j @@ -30,6 +29,11 @@ public ApiResponse createPost(@MemberId Long memberId, @Valid @RequestBody Po return ApiResponse.success(SuccessMessage.CREATED); } + @DeleteMapping("/{postId}") + public ApiResponse deletePost(@MemberId Long memberId, @PathVariable Long postId) { + postService.deletePost(memberId, postId); + return ApiResponse.success(SuccessMessage.OK); + @GetMapping public ApiResponse> getAllPosts() { return ApiResponse.success(postService.getAllPosts()); diff --git a/src/main/java/org/harang/server/domain/Category.java b/src/main/java/org/harang/server/domain/Category.java index f3f79d3..36d6854 100644 --- a/src/main/java/org/harang/server/domain/Category.java +++ b/src/main/java/org/harang/server/domain/Category.java @@ -21,7 +21,7 @@ public class Category { @Column(name = "name", nullable = false) private String name; - @OneToMany(mappedBy = "category") + @OneToMany(mappedBy = "category", cascade = CascadeType.ALL) private List postCategoryList = new ArrayList<>(); @Builder diff --git a/src/main/java/org/harang/server/domain/Help.java b/src/main/java/org/harang/server/domain/Help.java index 07dd418..9a0f2e1 100644 --- a/src/main/java/org/harang/server/domain/Help.java +++ b/src/main/java/org/harang/server/domain/Help.java @@ -22,7 +22,7 @@ public class Help { private String name; /* Relation Parent Mapping */ - @OneToMany(mappedBy = "help") + @OneToMany(mappedBy = "help", cascade = CascadeType.ALL) private List memberHelpList = new ArrayList<>(); @Builder diff --git a/src/main/java/org/harang/server/domain/Location.java b/src/main/java/org/harang/server/domain/Location.java index ad08ce8..f54751c 100644 --- a/src/main/java/org/harang/server/domain/Location.java +++ b/src/main/java/org/harang/server/domain/Location.java @@ -15,7 +15,7 @@ public class Location { @Column(name = "id", nullable = false) private Long id; - @OneToOne(fetch = FetchType.LAZY) + @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JoinColumn(name = "post_id") private Post post; diff --git a/src/main/java/org/harang/server/domain/MemberInfo.java b/src/main/java/org/harang/server/domain/MemberInfo.java index 4dc4339..94509e3 100644 --- a/src/main/java/org/harang/server/domain/MemberInfo.java +++ b/src/main/java/org/harang/server/domain/MemberInfo.java @@ -32,10 +32,10 @@ public class MemberInfo { private String refreshToken; /* Relation Parent Mapping */ - @OneToMany(mappedBy = "memberInfo") + @OneToMany(mappedBy = "memberInfo", cascade = CascadeType.ALL) private List memberHelpList = new ArrayList<>(); - @OneToMany(mappedBy = "memberInfo") + @OneToMany(mappedBy = "memberInfo", cascade = CascadeType.ALL) private List certificationList = new ArrayList<>(); @Builder diff --git a/src/main/java/org/harang/server/domain/Post.java b/src/main/java/org/harang/server/domain/Post.java index 381f609..bac69a9 100644 --- a/src/main/java/org/harang/server/domain/Post.java +++ b/src/main/java/org/harang/server/domain/Post.java @@ -55,10 +55,10 @@ public class Post { private Status status = Status.WAITING; /* Relation Parent Mapping */ - @OneToMany(mappedBy = "post") + @OneToMany(mappedBy = "post", cascade = CascadeType.ALL) private List matchingList = new ArrayList<>(); - @OneToMany(mappedBy = "post") + @OneToMany(mappedBy = "post", cascade = CascadeType.ALL) private List postCategoryList = new ArrayList<>(); @OneToMany(mappedBy = "post") diff --git a/src/main/java/org/harang/server/repository/LocationRepository.java b/src/main/java/org/harang/server/repository/LocationRepository.java index 05ce167..0e8dd3e 100644 --- a/src/main/java/org/harang/server/repository/LocationRepository.java +++ b/src/main/java/org/harang/server/repository/LocationRepository.java @@ -1,7 +1,16 @@ package org.harang.server.repository; +import jakarta.transaction.Transactional; import org.harang.server.domain.Location; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; public interface LocationRepository extends JpaRepository { + Location findByPostId(Long PostId); + + @Transactional + @Modifying + @Query("DELETE FROM Location l WHERE l.post.id = :postId") + void deleteByPostId(Long postId); } diff --git a/src/main/java/org/harang/server/service/PostService.java b/src/main/java/org/harang/server/service/PostService.java index 46e0900..a435847 100644 --- a/src/main/java/org/harang/server/service/PostService.java +++ b/src/main/java/org/harang/server/service/PostService.java @@ -70,6 +70,13 @@ public Post createPost(Long memberId, PostRequest request) { return savedPost; } + @Transactional + public void deletePost(Long memberId, Long postId) { + Post post = postRepository.findByIdOrThrow(postId); + + locationRepository.deleteByPostId(postId); + postRepository.delete(post); + public List getAllPosts() { return postRepository.findAll() .stream()