| 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)); |
|
|