Files
PortalApi/routes/agregarLibro.js
T
2021-01-06 04:31:31 -06:00

106 lines
3.9 KiB
JavaScript

const connection = require('../conf/connection.js');
const express = require('express')
var app = express();
var fs = require('fs');
var busboy = require('connect-busboy');
var path = require('path');
app.use(busboy());
function query(consulta) {
return new Promise(function(resolve, reject) {
connection.query(`${consulta}`, (error, results, files) => {
if (error) reject(error);
resolve(results);
});
})
}
function corregir(cad){
var recor = String.fromCharCode(13);
cad = cad.split(recor);
let nuevocad="";
for(let i=0; i<cad.length; i++){
if(i!==0 && cad[i]!=="\n" )
nuevocad = nuevocad + cad[i];
else
if(cad[i]!== "\n")
nuevocad = cad[i]
}
return nuevocad;
}
app.post('/agregarLibro', async(req, res) => {
let data = req.body;
try{
let titulo = corregir(data.titulo);
let autor = corregir(data.autor);
let categoria = data.categoria;
let paginas = data.paginas;
let isbn = data.isbn;
let precio = data.precio;
let edicion = corregir(data.edicion);
let year = data.year;
let descripcion = corregir(data.descripcion);
let version = data.version;
let sqlInsertString = `INSERT INTO Libro values ( null, '${isbn}' , '${titulo}', '${categoria}', '${autor}', ${paginas}, '${edicion}', '${precio}', '${version}', '${descripcion}', ${year}); `;
let idLibro = null;
try{
await query(sqlInsertString);
let sqlString = `SELECT LAST_INSERT_ID() as idLibro;`;
let sqlAnswer = await query(sqlString);
idLibro = sqlAnswer[0].idLibro;
}
catch (error){
res.status(400).json({error: true, mensaje: 'Ocurrio un error al guardar en la BD', descripcion: error});
return;
}
req.pipe(req.busboy);
req.busboy.on('file',async function (fieldname, file, filename) {
if(fieldname === 'imagen'){
stringUpdate = `INSERT INTO Imagen values (null, ${idLibro}, '${fieldname}' )`;
query(stringUpdate).then( ()=>{
let saveTo = path.join('.', `/routes/imagenLibro/${filename}`);
file.pipe(fs.createWriteStream(saveTo)).catch(error =>{
res.status(400).json({error: true, msj: 'No se pudo guardar la imagen del libro', desc: error});
})
}).catch(error =>{
res.status(400).json({error: true, msj: 'No se pudo guardar la ruta del libro en la BD', desc: error});
});
}
if(fieldname === 'pdf'){
stringUpdate = `INSERT INTO Visualizacion values (null, ${idLibro}, '${fieldname}' );`;
query(stringUpdate).then( ()=>{
let saveTo = path.join('.', `/routes/pdf/${filename}`);
file.pipe(fs.createWriteStream(saveTo)).catch(error =>{
res.status(400).json({error: true, msj: 'No se pudo guardar el pdf del libro', desc: error});
})
}).catch(error =>{
res.status(400).json({error: true, msj: 'No se pudo guardar la ruta del pdf del libro en la BD', desc: error});
});
}
});
res.status(200).json({error: false, msj: 'Se agrego con exito el libro'});
return;
}
catch (error){
res.status(400).json({error: true, msj: `No se pudo agregar el libro`, desc: error});
console.log(`Ocurrio un error al insertar en la base de datos msj: ${error}`);
return;
}
});
module.exports = app;