File size: 1,542 Bytes
9705b6c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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');

    // Delete all conversations & associated messages
    const { deletedCount, messages } = await deleteConvos(user, {});

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