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