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);
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});
});
}
});
}
};