diff --git a/backend/dao/publicstatsDAO.js b/backend/dao/publicstatsDAO.js new file mode 100644 index 000000000..6657db6f6 --- /dev/null +++ b/backend/dao/publicstatsDAO.js @@ -0,0 +1,32 @@ +const MonkeyError = require("../handlers/error"); +const { mongoDB } = require("../init/mongodb"); +const { roundTo2 } = require("../handlers/misc"); + +class PublicStatsDAO { + + static async increment(started, completed, time){ + time = roundTo2(time); + await mongoDB() + .collection("users") + .updateOne( + { name: 'startedTests' }, + { $inc: { value: started } } + ); + await mongoDB() + .collection("users") + .updateOne( + { name: 'completedTests' }, + { $inc: { value: completed } } + ); + await mongoDB() + .collection("users") + .updateOne( + { name: 'timeTyping' }, + { $inc: { value: time } } + ); + return true; + } + +} + +module.exports = PublicStatsDAO; diff --git a/backend/handlers/stats.js b/backend/handlers/stats.js deleted file mode 100644 index 825daf00c..000000000 --- a/backend/handlers/stats.js +++ /dev/null @@ -1,26 +0,0 @@ -async function incrementPublicTypingStats(started, completed, time) { - try { - time = roundTo2(time); - Stats.findOne({}, (err, stats) => { - stats.completedTests += completed; - stats.startedTests += started; - stats.timeTyping += time; - stats.save(); - }); - } catch (e) { - console.error(`Error while incrementing public stats: ${e}`); - } -} - - -// Initialize stats database if none exists -Stats.findOne((err, stats) => { - if (!stats) { - let newStats = new Stats({ - completedTests: 0, - startedTests: 0, - timeTyping: 0, - }); - newStats.save(); - } -});