From 6735bbab9b9386996ce7198bee9997595151d500 Mon Sep 17 00:00:00 2001 From: jenny <88226911+kmjenny@users.noreply.github.com> Date: Mon, 12 Feb 2024 16:50:55 +0900 Subject: [PATCH 1/3] =?UTF-8?q?[feat]=20#16=20Post=20Delete=20Api=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/harang/server/controller/PostController.java | 11 +++++++---- src/main/java/org/harang/server/domain/Location.java | 2 +- src/main/java/org/harang/server/domain/Post.java | 4 ++-- .../harang/server/repository/LocationRepository.java | 9 +++++++++ .../java/org/harang/server/service/PostService.java | 9 +++++++++ 5 files changed, 28 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/harang/server/controller/PostController.java b/src/main/java/org/harang/server/controller/PostController.java index bf68463..f93d1a8 100644 --- a/src/main/java/org/harang/server/controller/PostController.java +++ b/src/main/java/org/harang/server/controller/PostController.java @@ -9,10 +9,7 @@ import org.harang.server.dto.request.PostRequest; import org.harang.server.dto.type.SuccessMessage; import org.harang.server.service.PostService; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @Slf4j @RestController @@ -29,4 +26,10 @@ 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); + } } diff --git a/src/main/java/org/harang/server/domain/Location.java b/src/main/java/org/harang/server/domain/Location.java index ad08ce8..75fe3dc 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.REMOVE) @JoinColumn(name = "post_id") private Post post; diff --git a/src/main/java/org/harang/server/domain/Post.java b/src/main/java/org/harang/server/domain/Post.java index 6d749b9..57109e7 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.REMOVE) private List matchingList = new ArrayList<>(); - @OneToMany(mappedBy = "post") + @OneToMany(mappedBy = "post", cascade = CascadeType.REMOVE) private List postCategoryList = new ArrayList<>(); @Builder 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 54cbeb4..b6ed0a5 100644 --- a/src/main/java/org/harang/server/service/PostService.java +++ b/src/main/java/org/harang/server/service/PostService.java @@ -66,4 +66,13 @@ public Post createPost(Long memberId, PostRequest request) { return savedPost; } + @Transactional + public void deletePost(Long memberId, Long postId) { + Post post = postRepository.findByIdOrThrow(postId); + Location location = locationRepository.findByPostId(postId); + + locationRepository.deleteByPostId(postId); + postRepository.delete(post); + } + } From b71323cc4e526c6c22dd5590ccbf429fd615f7d9 Mon Sep 17 00:00:00 2001 From: jenny <88226911+kmjenny@users.noreply.github.com> Date: Wed, 14 Feb 2024 21:36:51 +0900 Subject: [PATCH 2/3] =?UTF-8?q?[fix]=20#16=20Cascade=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/harang/server/domain/Category.java | 2 +- src/main/java/org/harang/server/domain/Help.java | 2 +- src/main/java/org/harang/server/domain/MemberInfo.java | 4 ++-- src/main/java/org/harang/server/domain/Post.java | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) 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/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 57109e7..f786de7 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", cascade = CascadeType.REMOVE) + @OneToMany(mappedBy = "post", cascade = CascadeType.ALL) private List matchingList = new ArrayList<>(); - @OneToMany(mappedBy = "post", cascade = CascadeType.REMOVE) + @OneToMany(mappedBy = "post", cascade = CascadeType.ALL) private List postCategoryList = new ArrayList<>(); @Builder From d996fdf168ca4a6e003f79efaa269f0c6e159cc4 Mon Sep 17 00:00:00 2001 From: jenny <88226911+kmjenny@users.noreply.github.com> Date: Sat, 17 Feb 2024 12:22:29 +0900 Subject: [PATCH 3/3] =?UTF-8?q?[fix]=20#16=20=ED=95=84=EC=9A=94=EC=97=86?= =?UTF-8?q?=EB=8A=94=20=EB=B6=80=EB=B6=84=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/harang/server/domain/Location.java | 2 +- src/main/java/org/harang/server/service/PostService.java | 1 - src/main/resources/application.yml | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/harang/server/domain/Location.java b/src/main/java/org/harang/server/domain/Location.java index 75fe3dc..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, cascade = CascadeType.REMOVE) + @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JoinColumn(name = "post_id") private Post post; diff --git a/src/main/java/org/harang/server/service/PostService.java b/src/main/java/org/harang/server/service/PostService.java index b6ed0a5..34467cb 100644 --- a/src/main/java/org/harang/server/service/PostService.java +++ b/src/main/java/org/harang/server/service/PostService.java @@ -69,7 +69,6 @@ public Post createPost(Long memberId, PostRequest request) { @Transactional public void deletePost(Long memberId, Long postId) { Post post = postRepository.findByIdOrThrow(postId); - Location location = locationRepository.findByPostId(postId); locationRepository.deleteByPostId(postId); postRepository.delete(post); diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 4ec6372..a98fd60 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,7 +1,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_NAME}?useSSL=false&serverTimezone=Asia/Seoul&characterEncoding=UTF-8 + url: jdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_NAME}?useSSL=false&serverTimezone=Asia/Seoul&characterEncoding=UTF-8&allowPublicKeyRetrieval=true username: ${DB_USER} password: ${DB_PASSWORD}