| | 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'); |
| |
|
| | |
| | const { deletedCount, messages } = await deleteConvos(userId, {}); |
| |
|
| | if (messages.deletedCount > 0 || deletedCount > 0) { |
| | console.log(`π€: β
Deleted ${deletedCount} convos & ${messages.deletedCount} messages`); |
| | } |
| |
|
| | |
| | const { deletedCount: deletedMessages } = await deleteMessages({ user: userId }); |
| | if (deletedMessages > 0) { |
| | console.log(`π€: β
Deleted ${deletedMessages} remaining message(s)`); |
| | } |
| |
|
| | |
| | await deleteAllUserSessions(userId.toString()); |
| |
|
| | |
| | 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)); |
| |
|