Skip to content
Snippets Groups Projects
Commit 03a18a3a authored by ems19's avatar ems19
Browse files

[ADD] Integration with multer

parent 8adeedb4
No related branches found
No related tags found
4 merge requests!377prd_version of simcaq,!373merge dev -> homologa,!370Dev migration,!369Postgres migration
......@@ -52,6 +52,7 @@
"mocha": "^3.5.3",
"monetdb-pool": "0.0.8",
"mongoose": "^4.13.17",
"multer": "^1.4.5-lts.1",
"natives": "^1.1.6",
"nconf": "^0.8.5",
"node-uuid": "^1.4.8",
......
const multer = require('multer');
var storage = multer.memoryStorage()
var upload = multer({storage: storage});
module.exports = upload;
const Sequelize = require("sequelize");
const db = require('../db/postgres.js');
const libs = `${process.cwd()}/libs`;
var File = db.define("File",{
id: {
type: Sequelize.STRING,
allowNull:false,
unique: true,
primaryKey: true
},
type:{
type: Sequelize.STRING
},
name: {
type: Sequelize.STRING
},
data: {
type: Sequelize.BLOB('long')
}
},
{timestamps: false});
File.generateObjectId = function(){
var timestamp = (new Date().getTime() / 1000 | 0).toString(16);
return timestamp + 'xxxxxxxxxxxxxxxx'.replace(/[x]/g, function() {
return (Math.random() * 16 | 0).toString(16);
}).toLowerCase();
}
const setObjectId = file => {
file.id = File.generateObjectId()
};
File.beforeCreate(setObjectId);
module.exports=File;
var stream = require('stream');
const libs = `${process.cwd()}/libs`;
const File = require(`${libs}/models/file`);
exports.uploadFile = async (_file) => {
let file = await File.create({
id: 0,
type: _file.mimetype,
name: _file.originalname,
data: _file.buffer
}).catch(err => {
console.log(err);
res.json({msg: 'Error', detail: err});
});
return file.id;
}
exports.listAllFiles = (req, res) => {
File.findAll({attributes: ['id', 'name']}).then(files => {
res.json(files);
}).catch(err => {
console.log(err);
res.json({msg: 'Error', detail: err});
});
}
exports.downloadFile = (req, res) => {
File.findByPk(req.params.id).then(file => {
var fileContents = Buffer.from(file.data, "base64");
var readStream = new stream.PassThrough();
readStream.end(fileContents);
res.set('Content-disposition', 'attachment; filename=' + file.name);
res.set('Content-Type', file.type);
readStream.pipe(res);
}).catch(err => {
console.log(err);
res.json({msg: 'Error', detail: err});
});
}
......@@ -18,7 +18,9 @@ const email = require(`${libs}/middlewares/email`);
const passport = require('passport');
const uuid = require('node-uuid');
const fileWorker = require('./file.controller.js');
let upload = require('../middlewares/multer.config.js');
function emailSyntax(email) {
const regex = /^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
......@@ -61,19 +63,26 @@ pubApp.get('/:id', (req, res, next) => {
});
}, response('publication'));
pubApp.post('/', passport.authenticate('bearer', { session: false }), async (req, res, next) => {
pubApp.post('/', upload.single('file'), async (req, res, next) => {
let _file_id = null
if(req.file){
_file_id = await fileWorker.uploadFile(req.file);
if(!_file_id)
console.log("NAO ARQUIVO");}
let data = JSON.parse(req.body.data);
console.log(data);
let pb = await Publication.create({
id: 0,
filter: req.body.categoria,
title: req.body.title,
authors: req.body.autores,
organization: req.body.organizacao,
year: req.body.ano,
text: req.body.texto,
link: req.body.link,
upload: req.body.upload,
filter: data.categoria,
title: data.title,
authors: data.autores,
organization: data.organizacao,
year: data.ano,
text: data.texto,
link: data.link,
upload: _file_id,
is_draft: false,
is_homepage: req.body.homepage
is_homepage: data.homepage
}).catch(function (err) {
log.error(err);
let errors = [];
......@@ -85,13 +94,8 @@ pubApp.post('/', passport.authenticate('bearer', { session: false }), async (req
return res.json({ err, errors });
// handle error;
});
let up = await Publication.create({
user_id: req.user.id,
publication_id: pb.id
})
req.result = pb.toJSON();
next();
});
req.result = pb.toJSON;
}, response('publication'));
pubApp.post('/rascunho', passport.authenticate('bearer', { session: false }), async (req, res, next) => {
let pb = await Publication.create({
......
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