mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-09-22 08:12:00 +02:00
💽 feat: Add Script for User Stats (#2224)
This commit is contained in:
parent
b5d25f5e4f
commit
84656b9812
2 changed files with 55 additions and 0 deletions
54
config/user-stats.js
Normal file
54
config/user-stats.js
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
const path = require('path');
|
||||||
|
require('module-alias')({ base: path.resolve(__dirname, '..', 'api') });
|
||||||
|
const { silentExit } = require('./helpers');
|
||||||
|
const Conversation = require('~/models/schema/convoSchema');
|
||||||
|
const Message = require('~/models/schema/messageSchema');
|
||||||
|
const User = require('~/models/User');
|
||||||
|
const connect = require('./connect');
|
||||||
|
|
||||||
|
(async () => {
|
||||||
|
await connect();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the welcome / help menu
|
||||||
|
*/
|
||||||
|
console.purple('-----------------------------');
|
||||||
|
console.purple('Show the stats of all users');
|
||||||
|
console.purple('-----------------------------');
|
||||||
|
|
||||||
|
let users = await User.find({});
|
||||||
|
let userData = [];
|
||||||
|
for (const user of users) {
|
||||||
|
let conversationsCount = (await Conversation.count({ user: user._id })) ?? 0;
|
||||||
|
let messagesCount = (await Message.count({ user: user._id })) ?? 0;
|
||||||
|
|
||||||
|
userData.push({
|
||||||
|
User: user.name,
|
||||||
|
Conversations: conversationsCount,
|
||||||
|
Messages: messagesCount,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
userData.sort((a, b) => {
|
||||||
|
if (a.Conversations !== b.Conversations) {
|
||||||
|
return b.Conversations - a.Conversations;
|
||||||
|
}
|
||||||
|
|
||||||
|
return b.Messages - a.Messages;
|
||||||
|
});
|
||||||
|
|
||||||
|
console.table(userData);
|
||||||
|
|
||||||
|
silentExit(0);
|
||||||
|
})();
|
||||||
|
|
||||||
|
process.on('uncaughtException', (err) => {
|
||||||
|
if (!err.message.includes('fetch failed')) {
|
||||||
|
console.error('There was an uncaught error:');
|
||||||
|
console.error(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!err.message.includes('fetch failed')) {
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
});
|
|
@ -11,6 +11,7 @@
|
||||||
"update": "node config/update.js",
|
"update": "node config/update.js",
|
||||||
"add-balance": "node config/add-balance.js",
|
"add-balance": "node config/add-balance.js",
|
||||||
"list-balances": "node config/list-balances.js",
|
"list-balances": "node config/list-balances.js",
|
||||||
|
"user-stats": "node config/user-stats.js",
|
||||||
"rebuild:package-lock": "node config/packages",
|
"rebuild:package-lock": "node config/packages",
|
||||||
"reinstall": "node config/update.js -l -g",
|
"reinstall": "node config/update.js -l -g",
|
||||||
"b:reinstall": "bun config/update.js -b -l -g",
|
"b:reinstall": "bun config/update.js -b -l -g",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue