Skip to content
Snippets Groups Projects
Commit 4b155fff authored by Vytor Calixto's avatar Vytor Calixto :space_invader:
Browse files

Merge branch 'development' into workerpool_feature

parents 20f8501e 5b9740a3
No related branches found
No related tags found
2 merge requests!116Release v1.0.0,!73Workerpool feature
const libs = `${process.cwd()}/libs`;
const config = require(`${libs}/config`);
const Agenda = require('agenda');
const agenda = new Agenda({
db: {
address: config.monq.uri,
collection: 'agendaJobs'
},
maxConcurrency: 1,
defaultLockLimit: 0,
defaultLockLifetime: 86400*1000
});
require(`${libs}/jobs/download`)(agenda);
agenda.on('ready', function() {
agenda.start();
});
module.exports = agenda;
const libs = `${process.cwd()}/libs`;
const log = require(`${libs}/log`)(module);
const jsonexport = require('jsonexport');
const request = require('request');
const execQuery = require(`${libs}/db/query_exec`)
const fs = require('fs');
const config = require(`${libs}/config`);
const mail = require(`${libs}/middlewares/email.js`);
module.exports = function(agenda) {
agenda.define('download database', (job, done) => {
let sql = job.attrs.data.sql;
let table = job.attrs.data.table;
// Roda o COPY INTO
// Cria o registro no mongo
// Manda email notificando o usuário
let path = '/tmp/' + table + Date.now() + '.csv';
log.debug(sql);
let query = `COPY ${sql} INTO '${path}' USING DELIMITERS ';'`;
execQuery(query, []).then((result) => {
// If we're here then everything is ok. Result is empty
let file = {
name: table,
path
}
request.post(config.cdn.url + '/api/v1/file', {form: file}, (err, response, body) => {
if(err) {
log.error(err);
return done();
}
console.log(body);
let mailOptions = {
to: 'Teste <vsbc14@inf.ufpr.br>',
subject: 'DOWNLOAD!!!!!',
text: `Oi!\n\n ${body}`
};
mail(mailOptions, (err, info) => {
if (err) {
log.error(err);
return done();
}
console.log('Message %s sent: %s', info.messageId, info.response);
done();
});
});
}, (err) => {
log.error('Error creating dump from DB');
log.error(err);
return done();
});
});
}
const libs = `${process.cwd()}/libs`;
const log = require(`${libs}/log`)(module);
const config = require(`${libs}/config`);
const nodemailer = require('nodemailer');
const htmlToText = require('nodemailer-html-to-text').htmlToText;
let transporter = nodemailer.createTransport({
host: config.email.host,
port: config.email.port,
secure: config.email.secure,
ignoreTLS: config.email.ignoreTLS
});
transporter.use('compile', htmlToText());
// verify connection configuration
transporter.verify(function(error, success) {
if (error) {
log.error(error);
} else {
log.info('Email server is ready to take our messages');
}
});
let mailOptions = {
from: config.email.from
};
module.exports = function send(options, cb) {
Object.assign(options, mailOptions);
transporter.sendMail(options, (err, info) => {
if(err) {
return cb(err);
}
cb(null, info);
});
};
\ No newline at end of file
......@@ -54,13 +54,4 @@ regionApp.get('/', rqf.parse(), (req, res, next) => {
next();
}, rqf.build(), query, response('region'));
const agenda = require(`${libs}/agenda`);
regionApp.get('/download', (req, res) => {
req.sql.from('regiao').field('*');
let params = req.sql;
agenda.now('download database', {sql: req.sql.toString(), table: req.sql.tableFrom});
res.json({msg: 'Wait for it...'});
});
module.exports = regionApp;
......@@ -14,6 +14,8 @@ const id2str = require(`${libs}/middlewares/id2str`);
const ReqQueryFields = require(`${libs}/middlewares/reqQueryFields`);
const request = require(`request`);
let rqf = new ReqQueryFields();
let rqfCount = new ReqQueryFields();
......@@ -872,4 +874,23 @@ schoolApp.get('/count', rqfCount.parse(), rqfCount.build(), (req, res, next) =>
next();
}, query, id2str.transform(), response('school'));
schoolApp.get('/download', rqf.parse(), rqf.build(), (req, res, next) => {
req.sql.from('escola')
.field('*');
// agenda.now('download database', {sql: req.sql.toString(), table: req.sql.tableFrom});
let form = {
query: req.sql.toString(),
table: req.sql.tableFrom,
name: req.sql.tableFrom
};
request.post(config.cdn.url + '/api/v1/file', {form}, (err, response, body) => {
if(err) {
log.error(err);
return res.json({error: err});
}
console.log(body);
res.json({msg: 'Wait for download email'});
});
});
module.exports = schoolApp;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment