| import connectDb from '@librechat/backend/lib/db/connectDb'; |
| import { |
| deleteMessages, |
| deleteConvos, |
| User, |
| Session, |
| Balance, |
| Transaction, |
| } from '@librechat/backend/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 { _id: user } = await User.findOne({ email }).lean(); |
| console.log('π€: β
Found user in Database'); |
|
|
| |
| const { deletedCount, messages } = await deleteConvos(user, {}); |
|
|
| if (messages.deletedCount > 0 || deletedCount > 0) { |
| console.log(`π€: β
Deleted ${deletedCount} convos & ${messages.deletedCount} messages`); |
| } |
|
|
| |
| const { deletedCount: deletedMessages } = await deleteMessages({ user }); |
| if (deletedMessages > 0) { |
| console.log(`π€: β
Deleted ${deletedMessages} remaining message(s)`); |
| } |
|
|
| await Session.deleteAllUserSessions(user); |
|
|
| await User.deleteMany({ _id: user }); |
| await Balance.deleteMany({ user }); |
| await Transaction.deleteMany({ user }); |
|
|
| 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)); |
|
|