You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Luno/util/lxp/cacheloop.js

38 lines
2.5 KiB

const LXP = require('../../models/localxp');
const Monners = require('../../models/monners');
const chalk = require('chalk');
module.exports = async (client) => {
let cd = new Date().getTime();
//console.log(chalk.blueBright("\nSYNC/STRT || Beginning new Database sync loop"));
await Object.keys(client.misc.cache.lxp.xp).forEach(gxp => {
LXP.findOne({gid: gxp}).then(xp => {
if (!xp) {return;}
Object.keys(client.misc.cache.lxp.xp[gxp]).forEach(user => {
Monners.findOne({uid: user}).then(m => {
if (!Object.keys(client.misc.cache.monners).includes(user)) {/*console.log(chalk.yellow(`\nSYNC/VAL || User ${client.guilds.cache.get(client.misc.neptune).members.cache.get(user).displayName} in XP cache but not Monners cache. Aborting.`));*/ return;}
//console.log(`\nSYNC/PRE || Syncing monners for ${client.guilds.cache.get(client.misc.neptune).members.cache.get(user).displayName}. Doc ${m ? `exists and ${m.currency ? chalk.greenBright('has') : chalk.redBright("doesn't have")} currency field` : chalk.magenta("doesn't exist")}.`);
if (!m) {
//console.log(`SYNC/PRE || Didn't find doc. Making new.`);
m = new Monners({uid: user});
}
//console.log(`SYNC/PRE || User ${m.currency ? chalk.greenBright('has') : chalk.redBright("doesn't have")} currency field.`);
//let pre = m.currency ? true : false;
m.currency = client.misc.cache.monners[user];
m.save();
//let post = m.currency ? true : false;
//console.log(`SYNC/POST || User ${m.currency ? chalk.greenBright('has') : chalk.redBright("doesn't have")} currency field.`);
//if (pre && !post) {console.log(chalk.red(`SYNC/POST || Had currency field but it vanished.`));}
});
xp.xp[user] = [client.misc.cache.lxp.xp[gxp][user].xp, client.misc.cache.lxp.xp[gxp][user].level];
xp.markModified(`xp.${user}`);
if (cd - client.misc.cache.lxp.xp[gxp][user].lastXP > 600000) {
delete client.misc.cache.lxp.xp[gxp][user];
delete client.misc.cache.monners[user];
if (!Object.keys(client.misc.cache.lxp.xp[gxp]).length) {delete client.misc.cache.lxp.xp[gxp];}
}
});
xp.save();
});
});
};