Home Reference Source Repository

src/modules/queue.js

import Check from './check'
import Process from './process'
import onRegister from './rules/onRegister'
import onConfirmation from './rules/onConfirmation'
import kue from 'kue'
import models from '../models'

let redis_url = process.env['REDIS_URL'] || 'redis://127.0.0.1:6379'
let queue = kue.createQueue({ redis: redis_url })
let jobs = {
	createRegister : function(ds) {
		let j = queue.create('register', {
			id: ds.id,
			title: 'Verificando inscritos que não receberam boleto: ' + ds.name
		})
		.delay(parseInt(ds.interval_update))
		.save()
	},
	processRegister : function (job, done) {
		if (job.data.id == undefined) {
			models.Datasource.findAll({}).then(function (dss) {
				dss.forEach(jobs.createRegister)
			})
			done()
		} else {
			models.Datasource.findById(job.data.id).then(function(ds) {
				jobs.createRegister(ds)
				process.env['GOOGLE_SPREADSHEET_KEY'] = ds.key
				let prc = new Process()
				prc.setRule(new onRegister())
				prc.run(done)
			})
		}
	},
	createConfirm : function(ds) {
		queue.create('confirm', {
			id: ds.id,
			title: 'Confirmando inscritos que já pagaram: ' + ds.name
		})
		.delay(parseInt(ds.interval_update))
		.save()
	},
	processConfirm : function (job, done) {
		if (job.data.id == undefined) {
			models.Datasource.findAll({}).then(function(dss) {
				dss.forEach(jobs.createConfirm)
			})
			done()
		} else {
			models.Datasource.findById(job.data.id).then(function(ds) {
				jobs.createConfirm(ds)
				process.env['GOOGLE_SPREADSHEET_KEY'] = ds.key
				let prc = new Process()
				prc.setRule(new onConfirmation())
				prc.run(done)
			})
		}
	},
	init : function () {
		var jobR = queue.create('register', {title: 'Iniciando verificação registros.'}).save();
		var jobC = queue.create('confirm', {title: 'Iniciando confirmação inscritos.'}).save();
		queue.process('register', jobs.processRegister)
		queue.process('confirm', jobs.processConfirm)
	}
}

export default jobs