gb_utils
Version:
All utils file for beta
95 lines (86 loc) • 2.29 kB
JavaScript
// Dependencies Import
const CronJob = require("cron").CronJob;
// Utils Import
const redisUtils = require("./redisUtils");
const constantUtils = require("./constantUtils");
// Models Import
const Helper = require("gb_models/settingsModels");
const User = require("gb_models/userModels");
// Functions to Call
const setDailyRewardsDayInSetting = async () => {
const dayToClaim = new Date().getDay();
const updateData = await Helper.updateOne(
{
name: constantUtils.GENERALSETTING,
},
{
$set: {
"data.dayToClaim": parseInt(dayToClaim),
},
}
);
if (updateData && updateData.nModified !== 0) {
const helperData = await Helper.findOne({
name: constantUtils.GENERALSETTING,
}).lean();
await redisUtils.write(constantUtils.GENERALSETTING, helperData);
return;
}
};
const removeUserDeviceInfoEveryMonth = async () => {
const thirtyDaysAgo = new Date();
thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30);
const updateData = await User.updateOne(
{ deviceInfo: { $elemMatch: { addedAt: { $lte: thirtyDaysAgo } } } },
{
$pull: {
deviceInfo: {
addedAt: { $lte: thirtyDaysAgo }
}
},
$set: {
lastEditedTime: new Date(),
lastLogoutTime: new Date(),
},
}
);
if (updateData && updateData.modifiedCount !== 0) {
return;
} else {
console.log('Error in deviceInfo via cron not updated');
return;
}
};
const cronJob = async () => {
const everyMinJob = new CronJob({
cronTime: "* * * * *", //Every Min Cron
onTick: async function () {
console.log('Every Min Cron is working')
},
start: false,
// timeZone: 'America/Los_Angeles'
});
const everyDayJob = new CronJob({
cronTime: "0 0 * * *", //Every day Cron
onTick: async function () {
console.log('Every day Cron is working')
await setDailyRewardsDayInSetting();
await removeUserDeviceInfoEveryMonth();
},
start: false,
// timeZone: 'America/Los_Angeles'
});
const everyMonthJob = new CronJob({
cronTime: "0 0 1 * *", //Every Month Cron
onTick: async function () {
console.log('Every Month Cron is working')
// await removeUserDeviceInfoEveryMonth();
},
start: false,
// timeZone: 'America/Los_Angeles'
});
everyMinJob.start();
everyDayJob.start();
everyMonthJob.start();
};
module.exports = cronJob;