UNPKG

loopback-component-package

Version:
63 lines (59 loc) 2.46 kB
var later = require('later'); module.exports = function(loopbackApp){ var runHouseKeeper = function(){ var PackageUsage = loopbackApp.models.PackageUsage; console.log('crontask started running ...... '); PackageUsage.find({filter:{where:{isActive:true},include:['package']}}).then(function(usages){ return Promise.all(usages.filter(function(usage){ if(usage.usage >= usage.limit){ return true } return false; }).map(function(usage){ return usage.updateAttribute("isActive",false); })).then(function(usages){ console.log('crontask finished running'); return null; }).catch(function(err){ console.log('error doing package housekeeping',err); }) }) } var setupPeriods= function(periods){ periods = periods||[]; for(var i=0;i<periods.length;i++){ switch(periods[i]){ case 'every-minute': var sched = later.parse.recur().every(1).minute(); later.setInterval(runHouseKeeper, sched); break; case 'daily': var sched = later.parse.recur().on('00:00:00').time(); later.setInterval(runHouseKeeper, sched); break; case 'weekly': var sched = later.parse.recur().on('00:00:00').time().last().dayOfWeek(); later.setInterval(runHouseKeeper, sched); break; case 'monthly': var sched = later.parse.recur().on('00:00:00').time().last().dayOfMonth(); later.setInterval(runHouseKeeper, sched); break; case 'semiyearly': var sched = later.parse.recur().on('00:00:00').time().on(183).dayOfYear(); later.setInterval(runHouseKeeper, sched); break; case 'yearly': var sched = later.parse.recur().on('00:00:00').time().last().dayOfYear(); later.setInterval(runHouseKeeper, sched); break; default: //do nothing break; } }; } return { setupPeriods:setupPeriods } }