diff --git a/src/main/java/com/sb/web/account/controller/BackupController.java b/src/main/java/com/sb/web/account/controller/BackupController.java index dee7bf1..99da84c 100644 --- a/src/main/java/com/sb/web/account/controller/BackupController.java +++ b/src/main/java/com/sb/web/account/controller/BackupController.java @@ -30,4 +30,11 @@ public class BackupController { backupService.restore(current.getId(), req); return ResponseEntity.noContent().build(); } + + @DeleteMapping("/all") + public ResponseEntity deleteAll( + @RequestAttribute(AuthInterceptor.CURRENT_MEMBER) SessionUser current) { + backupService.deleteAll(current.getId()); + return ResponseEntity.noContent().build(); + } } diff --git a/src/main/java/com/sb/web/account/service/BackupService.java b/src/main/java/com/sb/web/account/service/BackupService.java index f47d1b5..7e5bb61 100644 --- a/src/main/java/com/sb/web/account/service/BackupService.java +++ b/src/main/java/com/sb/web/account/service/BackupService.java @@ -38,6 +38,22 @@ public class BackupService { private final BudgetService budgetService; private final QuickEntryService quickEntryService; + @Transactional + public void deleteAll(Long memberId) { + backupMapper.deleteEntryTags(memberId); + backupMapper.deleteEntries(memberId); + backupMapper.deleteRecurrings(memberId); + backupMapper.deleteBudgets(memberId); + backupMapper.deleteBudgetIncome(memberId); + backupMapper.deleteQuickEntries(memberId); + backupMapper.deleteInvestTrades(memberId); + backupMapper.deleteInvestHoldings(memberId); + backupMapper.deleteCategories(memberId); + backupMapper.deleteTags(memberId); + backupMapper.deleteWallets(memberId); + log.info("[deleteAll] member={} — all account data deleted", memberId); + } + @Transactional public void restore(Long memberId, RestoreRequest req) { if (isEmpty(req)) {