diff --git a/src/main/java/com/example/prdoit/controller/ProjectController.java b/src/main/java/com/example/prdoit/controller/ProjectController.java index a5e4bfe..12b343f 100644 --- a/src/main/java/com/example/prdoit/controller/ProjectController.java +++ b/src/main/java/com/example/prdoit/controller/ProjectController.java @@ -123,6 +123,18 @@ public ResponseEntity getBurndownList(@PathVariable String projectId, @P } } + @DeleteMapping("/{projectId}") + public ResponseEntity deleteProject(@PathVariable String projectId) { + log.info("[deleteProject] 프로젝트 삭제 요청"); + try{ + projectService.deleteProject(projectId); + return ResponseEntity.ok("프로젝트 삭제에 성공했습니다."); + } catch (RuntimeException e){ + log.error("[deleteProject] {}", e.getMessage()); + return ResponseEntity.badRequest().body("프로젝트 삭제에 실패했습니다."); + } + } + /* @PutMapping("/product") public ResponseEntity putBacklog(@RequestBody BacklogPutDto backlogPutDto) { diff --git a/src/main/java/com/example/prdoit/model/ProjectLevelContentTable.java b/src/main/java/com/example/prdoit/model/ProjectLevelContentTable.java index 1111202..ced6314 100644 --- a/src/main/java/com/example/prdoit/model/ProjectLevelContentTable.java +++ b/src/main/java/com/example/prdoit/model/ProjectLevelContentTable.java @@ -27,5 +27,8 @@ public class ProjectLevelContentTable { @ManyToOne @JoinColumn(name = "projectId") private ProjectTable projectId; - + + @OneToMany(mappedBy = "levelContentId", cascade = CascadeType.REMOVE, orphanRemoval = true, fetch = FetchType.EAGER) + @JsonIgnore + private List backlogList; } diff --git a/src/main/java/com/example/prdoit/model/ProjectTable.java b/src/main/java/com/example/prdoit/model/ProjectTable.java index ded09af..76fa126 100644 --- a/src/main/java/com/example/prdoit/model/ProjectTable.java +++ b/src/main/java/com/example/prdoit/model/ProjectTable.java @@ -44,5 +44,7 @@ public class ProjectTable { @JoinColumn(name = "id") private IdTable id; - + @OneToMany(mappedBy = "projectId", cascade = CascadeType.REMOVE, orphanRemoval = true, fetch = FetchType.EAGER) + @JsonIgnore + private List projectLevelContentList; } diff --git a/src/main/java/com/example/prdoit/service/project/ProjectService.java b/src/main/java/com/example/prdoit/service/project/ProjectService.java index 4d71133..2e08e90 100644 --- a/src/main/java/com/example/prdoit/service/project/ProjectService.java +++ b/src/main/java/com/example/prdoit/service/project/ProjectService.java @@ -25,4 +25,6 @@ public interface ProjectService { void deleteProjectContent(ContentDeleteDto contentDeleteDto); BacklogAddDto getBacklog(String projectId, String backlogTaskId); + + void deleteProject(String projectId); } diff --git a/src/main/java/com/example/prdoit/service/project/ProjectServiceImpl.java b/src/main/java/com/example/prdoit/service/project/ProjectServiceImpl.java index 17c1ab7..cc221aa 100644 --- a/src/main/java/com/example/prdoit/service/project/ProjectServiceImpl.java +++ b/src/main/java/com/example/prdoit/service/project/ProjectServiceImpl.java @@ -227,6 +227,21 @@ public BacklogAddDto getBacklog(String projectId, String backlogTaskId) { } + @Override + public void deleteProject(String projectId) { + log.info("[deleteProject] 프로젝트 삭제 시작"); + ProjectTable projectTable = projectTableRepository.findById(projectId).orElseThrow(() -> new CustomException("존재하지 않는 프로젝트입니다.")); + try { + projectTableRepository.delete(projectTable); + } catch (CustomException e) { + log.error(e.getMessage()); + throw new CustomException(e.getMessage()); + } catch (RuntimeException e) { + log.error(e.getMessage()); + throw e; + } + } + // internal method //ContentDto를 받아서 ProjectLevelContentTable을 생성 public ProjectLevelContentTable createContent(String projectId, int projectLevel, String projectContent) {