aboutsummaryrefslogtreecommitdiff
path: root/src/api/routes/service
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/routes/service')
-rw-r--r--src/api/routes/service/statsGET.js34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/api/routes/service/statsGET.js b/src/api/routes/service/statsGET.js
new file mode 100644
index 0000000..d6fa69e
--- /dev/null
+++ b/src/api/routes/service/statsGET.js
@@ -0,0 +1,34 @@
+const Route = require('../../structures/Route');
+const StatsGenerator = require('../../utils/StatsGenerator');
+
+// Thank you Bobby for the stats code https://github.com/BobbyWibowo/lolisafe/blob/safe.fiery.me/controllers/utilsController.js
+class filesGET extends Route {
+ constructor() {
+ super('/service/statistics', 'get', { adminOnly: true });
+ }
+
+ async run(req, res, db) {
+ const cachedStats = await db('statistics')
+ .select('type', 'data', 'batchId')
+ .where('batchId', '=', db('statistics').max('batchId'));
+
+ let stats = cachedStats.reduce((acc, { type, data }) => {
+ try {
+ acc[type] = JSON.parse(data);
+ } catch (e) {
+ console.error(e);
+ }
+
+ return acc;
+ }, {});
+
+ stats = { ...stats, ...(await StatsGenerator.getMissingStats(db, Object.keys(stats))) };
+
+ return res.json(StatsGenerator.keyOrder.reduce((acc, k) => {
+ acc[k] = stats[k];
+ return acc;
+ }, {}));
+ }
+}
+
+module.exports = filesGET;