fix: Update Alerts when creating user is deleted (#1148)

This commit is contained in:
Drew Davis 2025-09-09 10:32:49 -04:00 committed by GitHub
parent deff04f67b
commit d9b91124d0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 37 additions and 9 deletions

View file

@ -0,0 +1,5 @@
---
"@hyperdx/api": patch
---
fix: Update Alerts when creating user is deleted

View file

@ -1,6 +1,8 @@
import type { ObjectId } from '@/models';
import User from '@/models/user';
import mongoose from 'mongoose';
import type { ObjectId } from '@/models';
import Alert from '@/models/alert';
import User from '@/models/user';
export function findUserByAccessKey(accessKey: string) {
return User.findOne({ accessKey });
}
@ -24,9 +26,25 @@ export function findUsersByTeam(team: string | ObjectId) {
return User.find({ team }).sort({ createdAt: 1 });
}
export function deleteTeamMember(teamId: string | ObjectId, userId: string) {
return User.findOneAndDelete({
team: teamId,
_id: userId,
});
export async function deleteTeamMember(
teamId: string | ObjectId,
userIdToDelete: string,
userIdRequestingDelete: string | ObjectId,
) {
const [, deletedUser] = await Promise.all([
Alert.updateMany(
{ createdBy: new mongoose.Types.ObjectId(userIdToDelete), team: teamId },
{
$set: {
createdBy: new mongoose.Types.ObjectId(userIdRequestingDelete),
},
},
),
User.findOneAndDelete({
team: teamId,
_id: userIdToDelete,
}),
]);
return deletedUser;
}

View file

@ -283,13 +283,18 @@ router.delete(
}),
async (req, res, next) => {
try {
const id = req.params.id;
const userIdToDelete = req.params.id;
const teamId = req.user?.team;
if (teamId == null) {
throw new Error(`User ${req.user?._id} not associated with a team`);
}
await deleteTeamMember(teamId, id);
const userIdRequestingDelete = req.user?._id;
if (!userIdRequestingDelete) {
throw new Error(`Requesting user has no id`);
}
await deleteTeamMember(teamId, userIdToDelete, userIdRequestingDelete);
res.json({ message: 'User deleted' });
} catch (e) {