loopback-component-package
Version:
Package/Pricing management for loopback API server
63 lines (59 loc) • 2.46 kB
JavaScript
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
}
}