diff --git a/src/main/java/com/codingwasabi/howtodo/web/account/AccountController.java b/src/main/java/com/codingwasabi/howtodo/web/account/AccountController.java index 2177c72..68612d6 100644 --- a/src/main/java/com/codingwasabi/howtodo/web/account/AccountController.java +++ b/src/main/java/com/codingwasabi/howtodo/web/account/AccountController.java @@ -3,6 +3,7 @@ import static org.springframework.http.HttpStatus.*; import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @@ -33,4 +34,10 @@ ResponseEntity getValidationNickname(@RequestParam("value") String nicknam ResponseEntity get(@LoginAccount Account account) { return ResponseEntity.ok(account.getEmail() + " : " + account.getProvider()); } + + @DeleteMapping("/me") + ResponseEntity reset(@LoginAccount Account account) { + accountService.reset(account); + return ResponseEntity.noContent().build(); + } } diff --git a/src/main/java/com/codingwasabi/howtodo/web/account/AccountService.java b/src/main/java/com/codingwasabi/howtodo/web/account/AccountService.java index 0a1c1c8..9781876 100644 --- a/src/main/java/com/codingwasabi/howtodo/web/account/AccountService.java +++ b/src/main/java/com/codingwasabi/howtodo/web/account/AccountService.java @@ -6,4 +6,6 @@ public interface AccountService { Account findAccount(Long userId); boolean isValidNickname(String nickname); + + void reset(Account account); } diff --git a/src/main/java/com/codingwasabi/howtodo/web/account/AccountServiceImpl.java b/src/main/java/com/codingwasabi/howtodo/web/account/AccountServiceImpl.java index d230f8e..3227920 100644 --- a/src/main/java/com/codingwasabi/howtodo/web/account/AccountServiceImpl.java +++ b/src/main/java/com/codingwasabi/howtodo/web/account/AccountServiceImpl.java @@ -4,6 +4,9 @@ import org.springframework.transaction.annotation.Transactional; import com.codingwasabi.howtodo.web.account.entity.Account; +import com.codingwasabi.howtodo.web.calendar.CalendarRepository; +import com.codingwasabi.howtodo.web.dailyplan.DailyPlanRepository; +import com.codingwasabi.howtodo.web.dailyplan.entity.DailyPlan; import lombok.RequiredArgsConstructor; @@ -12,6 +15,7 @@ @RequiredArgsConstructor public class AccountServiceImpl implements AccountService { private final AccountRepository accountRepository; + private final CalendarRepository calendarRepository; @Override public Account findAccount(Long accountId) { @@ -24,4 +28,9 @@ public Account findAccount(Long accountId) { public boolean isValidNickname(String nickname) { return !accountRepository.existsByNickname(nickname); } + + @Override + public void reset(Account account) { + calendarRepository.deleteByAccount(account); + } } diff --git a/src/main/java/com/codingwasabi/howtodo/web/calendar/CalendarRepository.java b/src/main/java/com/codingwasabi/howtodo/web/calendar/CalendarRepository.java index 1cb14fa..2703e82 100644 --- a/src/main/java/com/codingwasabi/howtodo/web/calendar/CalendarRepository.java +++ b/src/main/java/com/codingwasabi/howtodo/web/calendar/CalendarRepository.java @@ -12,4 +12,6 @@ public interface CalendarRepository extends JpaRepository { Optional findByAccount(Account account); + + void deleteByAccount(Account account); } diff --git a/src/main/java/com/codingwasabi/howtodo/web/dailyplan/entity/DailyPlan.java b/src/main/java/com/codingwasabi/howtodo/web/dailyplan/entity/DailyPlan.java index 77e4030..7241e6f 100644 --- a/src/main/java/com/codingwasabi/howtodo/web/dailyplan/entity/DailyPlan.java +++ b/src/main/java/com/codingwasabi/howtodo/web/dailyplan/entity/DailyPlan.java @@ -38,10 +38,10 @@ public class DailyPlan { @ManyToOne(fetch = FetchType.LAZY) private Account account; - @OneToMany(mappedBy = "dailyPlan", cascade = CascadeType.ALL) + @OneToMany(mappedBy = "dailyPlan", cascade = CascadeType.ALL, orphanRemoval = true) private List toDos = new ArrayList<>(); - @OneToMany(mappedBy = "dailyPlan", cascade = CascadeType.ALL) + @OneToMany(mappedBy = "dailyPlan", cascade = CascadeType.ALL, orphanRemoval = true) private List comments = new ArrayList<>(); @Setter diff --git a/src/main/java/com/codingwasabi/howtodo/web/todo/entity/ToDo.java b/src/main/java/com/codingwasabi/howtodo/web/todo/entity/ToDo.java index 119d6ae..96a0bcc 100644 --- a/src/main/java/com/codingwasabi/howtodo/web/todo/entity/ToDo.java +++ b/src/main/java/com/codingwasabi/howtodo/web/todo/entity/ToDo.java @@ -2,6 +2,7 @@ import java.time.LocalDate; +import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; @@ -28,7 +29,7 @@ public class ToDo { private double hour; - @OneToOne(fetch = FetchType.LAZY) + @OneToOne(fetch = FetchType.LAZY, orphanRemoval = true, cascade = CascadeType.REMOVE) private Exam exam; @Setter