Files
PortalApi/routes/libroSimilar.js
2020-08-22 15:58:41 -05:00

81 lines
2.0 KiB
JavaScript

const connection = require('../conf/connection.js');
const express = require('express')
var app = express();
function query(consulta) {
return new Promise(function(resolve, reject) {
connection.query(`${consulta}`, (error, results, files) => {
if (error) reject(error);
resolve(results);
});
})
}
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min)) + min;
}
function getRandom(mini, maxi){
let a,b,c;
for(let i=1; i<=3; i++){
if(i==3){
c=a;
while(c===a || c===b){
console.log(`valores de a: ${a} ${b}`);
c=getRandomInt(mini,maxi);
}
}
else if(i==2){
b=a;
while(a===b){
b=getRandomInt(mini,maxi);
}
}
else{
a=getRandomInt(mini,maxi);
}
}
return [a,b,c];
}
app.get('/librosSimilares', async(req, res) => {
let data = req.query;
if( typeof( data.categoria ) === 'undefined' ){
res.status(400).json({error: true, msj: 'Falta la categoria del libro como parametro'});
return;
}
let sqlString = `SELECT * FROM Libro WHERE categoria='${data.categoria}' LIMIT 35;`;
console.log(` Esta es la cadena : ${sqlString}`);
let respuestaSql = await query(sqlString);
let maxi = respuestaSql.length;
let mini = 0;
let values = getRandom(mini, maxi);
respuestaSql = [respuestaSql[values[0]], respuestaSql[values[1]], respuestaSql[values[2]] ];
if(respuestaSql.length === 0 ){
res.status(400).json({error: true, msj: 'No se tienen libros similares'});
return;
}
try{
res.status(200).json({error:false, msj: 'exito', data: respuestaSql})
}
catch(error){
res.status(400).json({error: true, msj: 'No se pudo obtener los libros similares', desc: error});
return;
}
});
module.exports = app