mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-21 10:50:14 +01:00
refactor(data-schemas): restructure schemas, models, and methods for improved modularity
This commit is contained in:
parent
30b8a1c6c4
commit
f6ca8caf7e
17 changed files with 1080 additions and 782 deletions
|
|
@ -1,6 +1,7 @@
|
|||
import { connectDb, getModels } from '@librechat/backend/lib/db/connectDb';
|
||||
import { deleteMessages, deleteConvos, User, Balance } from '@librechat/backend/models';
|
||||
import { Transaction } from '@librechat/backend/models/Transaction';
|
||||
import { findUser, deleteAllUserSessions } from '@librechat/data-schemas';
|
||||
import { deleteMessages, deleteConvos } from '@librechat/backend/models';
|
||||
|
||||
type TUser = { email: string; password: string };
|
||||
|
||||
export default async function cleanupUser(user: TUser) {
|
||||
|
|
@ -10,29 +11,38 @@ export default async function cleanupUser(user: TUser) {
|
|||
const db = await connectDb();
|
||||
console.log('🤖: ✅ Connected to Database');
|
||||
|
||||
const { _id: user } = await User.findOne({ email }).lean();
|
||||
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');
|
||||
|
||||
// Delete all conversations & associated messages
|
||||
const { deletedCount, messages } = await deleteConvos(user, {});
|
||||
const { deletedCount, messages } = await deleteConvos(userId, {});
|
||||
|
||||
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 });
|
||||
const { deletedCount: deletedMessages } = await deleteMessages({ user: userId });
|
||||
if (deletedMessages > 0) {
|
||||
console.log(`🤖: ✅ Deleted ${deletedMessages} remaining message(s)`);
|
||||
}
|
||||
|
||||
// TODO: fix this to delete all user sessions with the user's email
|
||||
const { User, Session } = getModels();
|
||||
await Session.deleteAllUserSessions(user);
|
||||
// Delete all user sessions
|
||||
await deleteAllUserSessions(userId.toString());
|
||||
|
||||
await User.deleteMany({ _id: user });
|
||||
await Balance.deleteMany({ user });
|
||||
await Transaction.deleteMany({ user });
|
||||
// Get models from the registered models
|
||||
const { User, Balance, Transaction } = getModels();
|
||||
|
||||
// Delete user, balance, and transactions using the registered models
|
||||
await User.deleteMany({ _id: userId });
|
||||
await Balance.deleteMany({ user: userId });
|
||||
await Transaction.deleteMany({ user: userId });
|
||||
|
||||
console.log('🤖: ✅ Deleted user from Database');
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue