diff --git a/src/schemas/statSchema.js b/src/schemas/statSchema.js index f615703..ab737a0 100644 --- a/src/schemas/statSchema.js +++ b/src/schemas/statSchema.js @@ -152,50 +152,6 @@ statSchema.statics.tattooToke = async function(toke){ await stats.save(); } -/** - * Gets toke count from statistics document - * @returns {Number} Number of tokes across the entire site - */ -statSchema.statics.getTokeCount = async function(){ - //get stats doc - const stats = await this.getStats(); - - //return toke count - return stats.tokes.length; -} - -/** - * Gets toke counts for each individual callout in a map - * @returns {Map} Map of toke counts for each individual callout registered to the server - */ -statSchema.statics.getTokeCommandCounts = async function(){ - //get stats doc - const stats = await this.getStats() - //Create empty map to hold toke command counts - const count = new Map(); - - //for each toke - stats.tokes.forEach((toke) => { - //For each toke command called in the current toke - toke.toke.forEach((command) => { - //Get the current count for the current command - var curCount = count.get(command); - - //if the current count is null - if(curCount == null){ - //Set it to one - count.set(command, 1); - }else{ - //Set it to ++curCount - count.set(command, curCount + 1); - } - }); - }); - - //return the toke command count - return count; -} - /** * Ingests legacy tokes handed over by the migration model * @param {Array} rawLegacyTokes - List of strings containing contents of legacy cytube/fore.st toke logs @@ -282,7 +238,7 @@ statSchema.statics.dropLegacyTokes = async function(){ statDB.tokes = tokes; //Save the stat document - statDB.save(); + await statDB.save(); //Tell of our success console.log("Removed migration tokes!"); @@ -292,4 +248,36 @@ statSchema.statics.dropLegacyTokes = async function(){ } +//Methods + +/** + * Gets toke counts for each individual callout in a map + * @returns {Map} Map of toke counts for each individual callout registered to the server + */ +statSchema.methods.calculateTokeCommandCounts = async function(){ + //Create empty map to hold toke command counts + const count = new Map(); + + //for each toke + this.tokes.forEach((toke) => { + //For each toke command called in the current toke + toke.toke.forEach((command) => { + //Get the current count for the current command + var curCount = count.get(command); + + //if the current count is null + if(curCount == null){ + //Set it to one + count.set(command, 1); + }else{ + //Set it to ++curCount + count.set(command, curCount + 1); + } + }); + }); + + //return the toke command count + return count; +} + module.exports = mongoose.model("statistics", statSchema); \ No newline at end of file diff --git a/src/schemas/user/userSchema.js b/src/schemas/user/userSchema.js index d456127..bf7af99 100644 --- a/src/schemas/user/userSchema.js +++ b/src/schemas/user/userSchema.js @@ -311,13 +311,16 @@ userSchema.statics.findProfile = async function(user, includeEmail = false){ return null; //If someone's looking for tokebot }else if(user.user.toLowerCase() == "tokebot"){ + //Pull statistics document from the database + const statDB = await statModel.getStats(); + //fake a profile hashtable for tokebot const profile = { id: -420, user: "Tokebot", - date: (await statModel.getStats()).firstLaunch, - tokes: await statModel.getTokeCommandCounts(), - tokeCount: await statModel.getTokeCount(), + date: statDB.firstLaunch, + tokes: await statDB.calculateTokeCommandCounts(), + tokeCount: statDB.tokes.length, img: "/nonfree/johnny.png", signature: "!TOKE", bio: "!TOKE OR DIE!" diff --git a/www/nonfree b/www/nonfree new file mode 160000 index 0000000..8f3f78b --- /dev/null +++ b/www/nonfree @@ -0,0 +1 @@ +Subproject commit 8f3f78be454a156aa7b6a9a811cd656cf4bd80b2