데이터를 삭제하기 전엔 고민할 것
- 정말로 삭제할 것인가
- 아니면 삭제 했다고 마킹을 해둘 것인가 (Soft Delete)
이 서비스에서는 스터디(+연관) 데이터를 실제로 삭제 합니다.
- Soft Delete와 비슷한 역할을 할 수있는 스터디 종료(closed) 개념이 있기 때문에 서비스에서의 "삭제"는 정말로 데이터를 삭제 한다.
스터디 삭제요청을 처리할 핸들러 작성
package me.weekbelt.studyolle.study;
@RequiredArgsConstructor
@RequestMapping("/study/{path}/settings")
@Controller
public class StudySettingsController {
// ....
@PostMapping("/study/remove")
public String removeStudy(@CurrentAccount Account account, @PathVariable String path,
Model model) {
Study study = studyService.getStudyToUpdateStatus(account, path);
studyService.remove(study);
return "redirect:/";
}
}
스터디 삭제 처리를 위한 remove 메소드 작성
package me.weekbelt.studyolle.study;
@RequiredArgsConstructor
@Transactional
@Service
public class StudyService {
// .......
public void remove(Study study) {
if (study.isRemovable()){
studyRepository.delete(study);
} else {
throw new IllegalArgumentException("스터디를 삭제할 수 없습니다.");
}
}
}
Study 엔티티에 스터디를 삭제할수 있는지 여부를 묻는 isRemovable메소드 작성
package me.weekbelt.studyolle.domain;
// ......
public class Study {
// ..........
public boolean isRemovable() {
return !this.published; // TODO: 모임을 했던 스터디는 삭제할 수 없다.
}
}
참고: https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-JPA-%EC%9B%B9%EC%95%B1#
'스프링과 JPA 기반 웹 어플리케이션 개발 > 4부 스터디' 카테고리의 다른 글
58. 스터디 참여 및 탈퇴 (0) | 2020.04.28 |
---|---|
56. 스터디 설정 - 경로 및 이름 수정 (0) | 2020.04.28 |
55. 스터디 설정 - 상태변경 (0) | 2020.04.24 |
54. 스터디 설정 - 태그/지역 (0) | 2020.04.24 |
53. 스터디 설정 - 배너 (0) | 2020.04.24 |