From 63278102b46e912c251fdd0f010c802a46815312 Mon Sep 17 00:00:00 2001 From: Pas <74743263+Pasithea0@users.noreply.github.com> Date: Thu, 13 Mar 2025 11:33:30 -0600 Subject: [PATCH] add user deletion --- server/routes/users/[id]/index.ts | 45 +++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/server/routes/users/[id]/index.ts b/server/routes/users/[id]/index.ts index 765cea2..e18881f 100644 --- a/server/routes/users/[id]/index.ts +++ b/server/routes/users/[id]/index.ts @@ -71,6 +71,51 @@ export default defineEventHandler(async (event) => { } } + if (event.method === 'DELETE') { + try { + log.info('Deleting user account', { userId }); + + // Delete related records first + await prisma.$transaction(async (tx) => { + // Delete user bookmarks + await tx.bookmarks.deleteMany({ + where: { user_id: userId } + }); + + await tx.progress_items.deleteMany({ + where: { user_id: userId } + }); + + await tx.user_settings.delete({ + where: { id: userId } + }).catch(() => {}); + + await tx.sessions.deleteMany({ + where: { user: userId } + }); + + await tx.users.delete({ + where: { id: userId } + }); + }); + + log.info('User account deleted successfully', { userId }); + + return { success: true, message: 'User account deleted successfully' }; + } catch (error) { + log.error('Failed to delete user account', { + userId, + error: error instanceof Error ? error.message : String(error) + }); + + throw createError({ + statusCode: 500, + message: 'Failed to delete user account', + cause: error instanceof Error ? error.message : 'Unknown error' + }); + } + } + throw createError({ statusCode: 405, message: 'Method not allowed'