perf(group-fns): optimize sequential delete to be concurrent

This commit is contained in:
GLEF1X
2024-07-29 21:40:48 -04:00
parent 938a7b7e72
commit 98b6373d6a

View File

@@ -336,31 +336,36 @@ export const removeUsersFromGroupByUserIds = async ({
) )
); );
// TODO: this part can be optimized const promises: Array<Promise<void>> = [];
for await (const userId of userIds) { for (const userId of userIds) {
const t = await userGroupMembershipDAL.filterProjectsByUserMembership(userId, group.id, projectIds, tx); promises.push(
const projectsToDeleteKeyFor = projectIds.filter((p) => !t.has(p)); (async () => {
const t = await userGroupMembershipDAL.filterProjectsByUserMembership(userId, group.id, projectIds, tx);
const projectsToDeleteKeyFor = projectIds.filter((p) => !t.has(p));
if (projectsToDeleteKeyFor.length) { if (projectsToDeleteKeyFor.length) {
await projectKeyDAL.delete( await projectKeyDAL.delete(
{ {
receiverId: userId, receiverId: userId,
$in: { $in: {
projectId: projectsToDeleteKeyFor projectId: projectsToDeleteKeyFor
} }
}, },
tx tx
); );
} }
await userGroupMembershipDAL.delete( await userGroupMembershipDAL.delete(
{ {
groupId: group.id, groupId: group.id,
userId userId
}, },
tx tx
);
})()
); );
} }
await Promise.all(promises);
} }
if (membersToRemoveFromGroupPending.length) { if (membersToRemoveFromGroupPending.length) {