diff options
Diffstat (limited to 'vnfcatalogue/VNF_Catalogue/routes/search_projects.js')
-rw-r--r-- | vnfcatalogue/VNF_Catalogue/routes/search_projects.js | 79 |
1 files changed, 77 insertions, 2 deletions
diff --git a/vnfcatalogue/VNF_Catalogue/routes/search_projects.js b/vnfcatalogue/VNF_Catalogue/routes/search_projects.js index 49fceeb..96f68db 100644 --- a/vnfcatalogue/VNF_Catalogue/routes/search_projects.js +++ b/vnfcatalogue/VNF_Catalogue/routes/search_projects.js @@ -9,11 +9,86 @@ var express = require('express'); var router = express.Router(); +var async = require('async'); + + +var renderer = function(res, err, results) { + console.log(results); + res.render('search_projects', { title: 'Express', json: results }); +} + +var get_tags = function(result, callback) { + db_pool.getConnection(function(err, connection) { + sql_query = 'select tag_name from tag where tag_id in (select tag_id from vnf_tags where vnf_id = ' + result['vnf_id'] + ') limit 5'; + // TODO find why it works and not above + connection.query(sql_query, function (error, results, fields) { + console.log(results); + result['tags'] = results; + callback(null, result); + //connection.release(); + if (error) throw error; + }); + }); +} + + +var get_images = function(result, callback) { + db_pool.getConnection(function(err, connection) { + sql_query = 'select photo_url from photo where photo_id = ' + result['photo_id']; + // TODO find why it works here and not when declared outside the method + console.log(sql_query); + connection.query(sql_query, function (error, results, fields) { + console.log(results[0].photo_url); + result['photo_url'] = results[0].photo_url; + callback(null, result); + //connection.release(); + if (error) throw error; + }); + }); +} + +var sql_data = function(tags, renderer, res) { + var tag_array = "\'" + tags.map(function (item) { return item; }).join("\',\'") + "\'"; + console.log(tag_array); + var condition = ''; + db_pool.getConnection(function(err, connection) { + sql_query = 'select tag_id from tag where tag_name in (' + tag_array + ')'; + connection.query(sql_query, function (error, results, fields) { + condition = 'SELECT * FROM vnf as v'; + for (var i in results) { + condition += (i == 0) ? ' WHERE ' : ' AND '; + condition += 'v.vnf_id IN (SELECT vnf_id from vnf_tags where tag_id = ' + results[i]['tag_id'] + ')'; + } + + connection.query(condition, function (error, results, fields) { + console.log(results); + async.map(results, get_images, function(error, results) { + async.map(results, get_tags, renderer.bind(null, res)); + }); + //connection.release(); + if (error) throw error; + }); + + connection.release(); + if (error) throw error; + }); + }); + +} router.get('/', function(req, res) { + + console.log(typeof(req.param('tags'))); var tags = req.param('tags'); - console.log(tags); - res.render('search_projects', { title: 'Express' }); + + if(tags) { + tags = tags.toLowerCase().split(/[ ,]+/); + console.log(tags); + sql_data(tags, renderer, res); + } else { + res.render('search_projects', { title: 'Express', json: false}); + } + }); module.exports = router; |