UNPKG

gb_utils

Version:
95 lines (86 loc) 2.29 kB
// 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;