Skip to content
Snippets Groups Projects
download.js 1.87 KiB
Newer Older
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`);
Vytor Calixto's avatar
Vytor Calixto committed
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);
Vytor Calixto's avatar
Vytor Calixto committed

                let mailOptions = {
                    to: 'Teste <vsbc14@inf.ufpr.br>',
                    subject: 'DOWNLOAD!!!!!',
                    text: `Oi!\n\n ${body}`
Vytor Calixto's avatar
Vytor Calixto committed
                };
                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();