Skip to content
Snippets Groups Projects
downloadDatabase.js 1.6 KiB
Newer Older
const libs = `${process.cwd()}/libs`;

const log = require(`${libs}/log`)(module);

const execute = require(`${libs}/middlewares/query`).execute;

const request = require(`request`);

const config = require(`${libs}/config`);

module.exports = function download(table, mappingTable) {
    return (req, res, next) => {
        // First, query the mapping
        execute(`SELECT target_name, name FROM ${mappingTable}`, undefined, (err, result) => {
            if(err) {
                log.error(err.stack);
                next(new Error('Request could not be satisfied due to a database error.'));
            } else {
                let header = '';
                req.sql.from(table);
                result.forEach((field) => {
                    req.sql.field(field.name, field.target_name);
Vytor Calixto's avatar
Vytor Calixto committed
                    if(header === '') header += field.target_name;
                    else header = header + ';' + field.target_name;
                });

                let form = {
                    query: req.sql.toString(),
                    table: req.sql.tableFrom,
                    name: req.sql.tableFrom,
                    username: req.user.name,
                    email: req.user.email,
                    header
                };

                request.post(config.cdn.url + '/api/v1/file', {form}, (err, response, body) => {
                    if(err) {
                        log.error(err);
                        return res.json({error: err});
                    }
                    res.json({msg: 'Wait for download email', waitForIt: true});
                });
            }
        });
    }
};