From fa43c4943f504a8f7324d7cc45b5b979f25ec869 Mon Sep 17 00:00:00 2001 From: Stevan Freeborn <65925598+StevanFreeborn@users.noreply.github.com> Date: Fri, 15 Sep 2023 17:58:22 -0500 Subject: [PATCH] feat: delete user followers and followings when user deleted --- convex/users.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/convex/users.ts b/convex/users.ts index 0e11f13..b90f9c1 100644 --- a/convex/users.ts +++ b/convex/users.ts @@ -93,6 +93,15 @@ export const deleteUser = internalMutation({ .withIndex('by_user_post_id', q => q.eq('userId', userRecord._id)) .collect(); + const userFollowers = await ctx.db + .query('follows') + .withIndex('by_following', q => q.eq('following', userRecord._id)) + .collect(); + const userFollowings = await ctx.db + .query('follows') + .withIndex('by_follower', q => q.eq('follower', userRecord._id)) + .collect(); + await Promise.all( userPosts.map(async post => await ctx.db.delete(post._id)) ); @@ -101,6 +110,14 @@ export const deleteUser = internalMutation({ userLikes.map(async like => await ctx.db.delete(like._id)) ); + await Promise.all( + userFollowers.map(async follower => await ctx.db.delete(follower._id)) + ); + + await Promise.all( + userFollowings.map(async following => await ctx.db.delete(following._id)) + ); + await ctx.db.delete(userRecord._id); }, });