File size: 2,099 Bytes
f0743f4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | import { connectDb } from '@librechat/backend/db/connect';
import {
findUser,
deleteConvos,
deleteMessages,
deleteAllUserSessions,
} from '@librechat/backend/models';
import { User, Balance, Transaction, AclEntry, Token, Group } from '@librechat/backend/db/models';
type TUser = { email: string; password: string };
export default async function cleanupUser(user: TUser) {
const { email } = user;
try {
console.log('π€: global teardown has been started');
const db = await connectDb();
console.log('π€: β
Connected to Database');
const foundUser = await findUser({ email });
if (!foundUser) {
console.log('π€: β οΈ User not found in Database');
return;
}
const userId = foundUser._id;
console.log('π€: β
Found user in Database');
// Delete all conversations & associated messages
const { deletedCount, messages } = await deleteConvos(userId, {});
if (messages.deletedCount > 0 || deletedCount > 0) {
console.log(`π€: β
Deleted ${deletedCount} convos & ${messages.deletedCount} messages`);
}
// Ensure all user messages are deleted
const { deletedCount: deletedMessages } = await deleteMessages({ user: userId });
if (deletedMessages > 0) {
console.log(`π€: β
Deleted ${deletedMessages} remaining message(s)`);
}
// Delete all user sessions
await deleteAllUserSessions(userId.toString());
// Delete user, balance, transactions, tokens, ACL entries, and remove from groups
await Balance.deleteMany({ user: userId });
await Transaction.deleteMany({ user: userId });
await Token.deleteMany({ userId: userId });
await AclEntry.deleteMany({ principalId: userId });
await Group.updateMany({ memberIds: userId }, { $pull: { memberIds: userId } });
await User.deleteMany({ _id: userId });
console.log('π€: β
Deleted user from Database');
await db.connection.close();
} catch (error) {
console.error('Error:', error);
}
}
process.on('uncaughtException', (err) => console.error('Uncaught Exception:', err));
|