From 84656b981241882faefe2fb6d19914e0a29e8048 Mon Sep 17 00:00:00 2001 From: Ivan Dachev Date: Wed, 27 Mar 2024 20:41:29 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=BD=20feat:=20Add=20Script=20for=20Use?= =?UTF-8?q?r=20Stats=20(#2224)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/user-stats.js | 54 ++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + 2 files changed, 55 insertions(+) create mode 100644 config/user-stats.js diff --git a/config/user-stats.js b/config/user-stats.js new file mode 100644 index 000000000..9b8cdfb85 --- /dev/null +++ b/config/user-stats.js @@ -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); + } +}); diff --git a/package.json b/package.json index ff6100751..b1f91e8dd 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "update": "node config/update.js", "add-balance": "node config/add-balance.js", "list-balances": "node config/list-balances.js", + "user-stats": "node config/user-stats.js", "rebuild:package-lock": "node config/packages", "reinstall": "node config/update.js -l -g", "b:reinstall": "bun config/update.js -b -l -g",