From 5e432c96394903fdfc34fa592b05c93e286ea42a Mon Sep 17 00:00:00 2001 From: DanielRamirezGe Date: Sat, 22 Aug 2020 15:58:41 -0500 Subject: [PATCH] barra de busqueda y temas --- app.js | 2 +- routes/getLibros.js | 36 +++++++++++++++++++++++++++++++ routes/index.js | 2 ++ routes/libroSimilar.js | 49 +++++++++++++++++++++++++++++++++++------- routes/temaLibro.js | 45 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 125 insertions(+), 9 deletions(-) create mode 100644 routes/getLibros.js create mode 100644 routes/temaLibro.js diff --git a/app.js b/app.js index 365cfd5..33a9d31 100644 --- a/app.js +++ b/app.js @@ -2,7 +2,7 @@ var express = require('express'); var app = express(); var cors = require('cors'); app.get('/', function(req, res) { - res.send('Hello World!'); + res.send('Api de protal editorial'); }); require('dotenv').config() app.use(cors()); diff --git a/routes/getLibros.js b/routes/getLibros.js new file mode 100644 index 0000000..8042bf1 --- /dev/null +++ b/routes/getLibros.js @@ -0,0 +1,36 @@ +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); + }); + }) +} + + + +app.get('/getLibros', async(req, res) => { + + try{ + let sqlString = `SELECT idLibro, titulo, categoria, autor FROM Libro;`; + console.log(` Esta es la cadena : ${sqlString}`); + let respuestaSql = await query(sqlString); + + + + 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; diff --git a/routes/index.js b/routes/index.js index fba3f39..6b886cc 100644 --- a/routes/index.js +++ b/routes/index.js @@ -8,5 +8,7 @@ app.use(require('./libroNovedades')); app.use(require('./libroSimilar')); app.use(require('./getNombresCarrusel')); app.use(require('./getImagenCarrusel')); +app.use(require('./getLibros')); +app.use(require('./temaLibro')); module.exports = app; \ No newline at end of file diff --git a/routes/libroSimilar.js b/routes/libroSimilar.js index 7a3a6f4..3e5c564 100644 --- a/routes/libroSimilar.js +++ b/routes/libroSimilar.js @@ -1,11 +1,8 @@ const connection = require('../conf/connection.js'); const express = require('express') var app = express(); -var xlsx = require('node-xlsx'); -var fs = require('fs'); -var busboy = require('connect-busboy'); -var path = require('path'); -const { type } = require('os'); + + function query(consulta) { @@ -18,6 +15,35 @@ function query(consulta) { } +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) => { @@ -26,12 +52,19 @@ app.get('/librosSimilares', async(req, res) => { 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 3;`; + 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 pudo hacer la consulta'}); + res.status(400).json({error: true, msj: 'No se tienen libros similares'}); return; } @@ -39,7 +72,7 @@ app.get('/librosSimilares', async(req, res) => { res.status(200).json({error:false, msj: 'exito', data: respuestaSql}) } catch(error){ - res.status(400).json({error: true, msj: 'No se pudo obtener la imagen', desc: error}); + res.status(400).json({error: true, msj: 'No se pudo obtener los libros similares', desc: error}); return; } diff --git a/routes/temaLibro.js b/routes/temaLibro.js new file mode 100644 index 0000000..418ba94 --- /dev/null +++ b/routes/temaLibro.js @@ -0,0 +1,45 @@ +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); + }); + }) +} + + +app.get('/temaLibro', async(req, res) => { + + try{ + + 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}';`; + console.log(` Esta es la cadena : ${sqlString}`); + let respuestaSql = await query(sqlString); + + + if(respuestaSql.length === 0 ){ + res.status(400).json({error: true, msj: 'No se tienen libros similares'}); + return; + } + + 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