From 795afc80ff0790e16eab53ec5cf39a36f34438c7 Mon Sep 17 00:00:00 2001 From: ByungCheol Date: Thu, 9 Jul 2026 22:39:06 +0900 Subject: [PATCH] =?UTF-8?q?feat(account):=20=EA=B0=80=EA=B3=84=EB=B6=80=20?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EC=A0=84=EC=B2=B4=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20API=20(DELETE=20/account/all)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- .../web/account/controller/BackupController.java | 7 +++++++ .../sb/web/account/service/BackupService.java | 16 ++++++++++++++++ 2 files changed, 23 insertions(+) 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)) {