feat(api): implement GDPR-compliant user data deletion
- Add deletedAt/deletionScheduledAt fields to User model with indexes - Implement 5 CQRS command handlers: - RequestUserDeletion: 30-day soft-delete grace period - CancelUserDeletion: restore within grace period - ForceDeleteUser: admin immediate deletion with PII anonymization - ProcessScheduledDeletions: cron-ready batch processor - ExportUserData: GDPR Article 20 data portability - Cascade strategy: anonymize PII, expire listings, cancel subscriptions, delete reviews/inquiries/searches/notifications, preserve payments for audit - Add UserDataController with DELETE /users/me, POST /users/me/cancel-deletion, GET /users/me/export, DELETE /users/:id/force (admin) - 22 unit tests covering all handlers (160 files, 853 tests passing) - Migration: 20260410000000_add_user_soft_delete_fields Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
-- AlterTable
|
||||
ALTER TABLE "User" ADD COLUMN "deletedAt" TIMESTAMP(3),
|
||||
ADD COLUMN "deletionScheduledAt" TIMESTAMP(3);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "User_deletedAt_idx" ON "User"("deletedAt");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "User_deletionScheduledAt_idx" ON "User"("deletionScheduledAt");
|
||||
Reference in New Issue
Block a user