Skip to content

Commit 45c163c

Browse files
Merge pull request #65 from scennect/feat/64
#64 Feature: Project 삭제 구현
2 parents b468a64 + 8ffcc56 commit 45c163c

File tree

4 files changed

+40
-2
lines changed

4 files changed

+40
-2
lines changed

src/main/java/com/example/controller/ProjectController.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,4 +119,25 @@ public ApiResponse<String> editProject(@AuthenticationPrincipal PrincipleDetail
119119
return ApiResponse.onSuccess(SuccessStatus.OK.getCode(), SuccessStatus.OK.getMessage(),"Project updated");
120120
}
121121

122+
// 프로젝트 정보 편집
123+
@DeleteMapping("/project/{projectId}")
124+
public ApiResponse<String> removeProject(@AuthenticationPrincipal PrincipleDetail principleDetail,
125+
@PathVariable("projectId") Long projectId) {
126+
127+
if (principleDetail == null) {
128+
log.info("Unauthenticated request - User not logged in");
129+
return ApiResponse.onFailure(
130+
ErrorStatus.USER_NOT_LOGIN.getCode(),
131+
ErrorStatus.USER_NOT_LOGIN.getMessage(),
132+
"로그인을 해야 됩니다."
133+
);
134+
}
135+
136+
User user = userService.loadMemberByPrincipleDetail(principleDetail);
137+
projectService.removeProject(projectId, user);
138+
139+
return ApiResponse.onSuccess(SuccessStatus.OK.getCode(), SuccessStatus.OK.getMessage(),"Project removed");
140+
}
141+
142+
122143
}

src/main/java/com/example/domain/Project.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@ public class Project extends BaseEntity{
2626

2727
private String projectImageURL;
2828

29-
@OneToMany(mappedBy = "project")
29+
@OneToMany(mappedBy = "project", cascade = CascadeType.ALL, orphanRemoval = true)
3030
@Builder.Default
3131
private List<Node> nodes = new ArrayList<>();
3232

33-
@OneToMany(mappedBy = "project")
33+
@OneToMany(mappedBy = "project", cascade = CascadeType.ALL, orphanRemoval = true)
3434
@Builder.Default
3535
private List<ProjectUser> projectUsers = new ArrayList<>();
3636

src/main/java/com/example/service/ProjectService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,6 @@ public interface ProjectService {
2525
public Project verifyProjectAccess(Long projectId, User user);
2626

2727
public void addNode(Project project, Node node);
28+
29+
void removeProject(Long projectId, User user);
2830
}

src/main/java/com/example/service/ProjectServiceImpl.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,4 +133,19 @@ public void addNode(Project project, Node node) {
133133
projectRepository.save(project);
134134
}
135135

136+
@Override
137+
public void removeProject(Long projectId, User user) {
138+
139+
Project project = findProjectById(projectId);
140+
141+
// 프로젝트 권한이 없으므로 Error return
142+
if (!projectUserService.checkProjectUserExists(project, user)) {
143+
throw new GeneralException(ErrorStatus.PROJECT_USER_NOT_FOUND);
144+
}
145+
146+
projectRepository.delete(project);
147+
}
148+
149+
150+
136151
}

0 commit comments

Comments
 (0)