81 lines
2.0 KiB
JavaScript
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
|