diff options
Diffstat (limited to 'src/api/routes/service')
| -rw-r--r-- | src/api/routes/service/statsGET.js | 34 |
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; |