From ca0e607c1f4852de484440451be88ebda3f00421 Mon Sep 17 00:00:00 2001 From: Taehun88 Date: Wed, 12 Feb 2025 20:41:21 +0900 Subject: [PATCH] feat:delete project --- .../prdoit/controller/ProjectController.java | 12 ++++++++++++ .../prdoit/model/ProjectLevelContentTable.java | 5 ++++- .../com/example/prdoit/model/ProjectTable.java | 4 +++- .../prdoit/service/project/ProjectService.java | 2 ++ .../service/project/ProjectServiceImpl.java | 15 +++++++++++++++ 5 files changed, 36 insertions(+), 2 deletions(-) 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) {