diff options
author | Deepak S <deepak.s@linux.intel.com> | 2017-07-21 06:20:45 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@opnfv.org> | 2017-07-21 06:20:45 +0000 |
commit | 4eca0440aee462f842567d5ef8b8796c27f4dd1b (patch) | |
tree | 63935d03fb32782b0cefce01b7531cf65449d23e /VNF_Catalogue/routes/search_projects_results.js | |
parent | d923180e4af2612361dd7d4bf1627092a4d552d8 (diff) | |
parent | 1f6b18a1974c1b53a079b21b6be39af86deb2432 (diff) |
Merge "VNF_Catalogue Codebase"
Diffstat (limited to 'VNF_Catalogue/routes/search_projects_results.js')
-rw-r--r-- | VNF_Catalogue/routes/search_projects_results.js | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/VNF_Catalogue/routes/search_projects_results.js b/VNF_Catalogue/routes/search_projects_results.js new file mode 100644 index 00000000..dd5423b6 --- /dev/null +++ b/VNF_Catalogue/routes/search_projects_results.js @@ -0,0 +1,120 @@ +/******************************************************************************* + * Copyright (c) 2017 Kumar Rishabh and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Apache License, Version 2.0 + * which accompanies this distribution, and is available at + * http://www.apache.org/licenses/LICENSE-2.0 + *******************************************************************************/ + +var express = require('express'); +var router = express.Router(); +var async = require('async'); + + +var renderer = function(res, err, results) { + //console.log(results); + //console.log(results.length); + if(results.length >= 1) + res.end(JSON.stringify(results)); + else + res.end(JSON.stringify({})); +} + +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'] + ') and is_vnf_name = 0 limit 5'; + // TODO find why it works and not above + connection.query(sql_query, function (error, results, fields) { + //console.log(results); + connection.release(); + if (error) { + result['tags'] = false; + //throw error; + } else { + result['tags'] = results; + } + callback(null, result); + }); + }); +} + + +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); + //callback(null, result); + connection.release(); + if (error) { + result['photo_url'] = false; + //throw error; + } else { + result['photo_url'] = results[0].photo_url; + } + callback(null, result); + + }); + }); +} + +var sql_data = function(tags, previous_elements, 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) { + console.log('tag_id'); + console.log(results); + condition = 'SELECT * FROM vnf as v'; + orig_condition = condition; + 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'] + ')'; + } + if (condition === orig_condition) + condition += ' WHERE v.vnf_id = -1' + condition += ' limit ' + previous_elements.toString() + ', 5'; + console.log(condition); + + connection.query(condition, function (error, results, fields) { + //console.log(results); + connection.release(); + if (error) { + //throw error; + console.log('connection error occurred'); + } else { + async.map(results, get_images, function(error, results) { + async.map(results, get_tags, renderer.bind(null, res)); + }); + } + }); + + //connection.release(); + //if (error) throw error; + }); + }); + +} + +router.post('/', function(req, res) { + console.log(typeof(req.param('tags'))); + var tags = req.param('tags'); + var previous_elements = (parseInt(req.param('page')) - 1) * 5; + console.log(previous_elements); + + if(tags) { + tags = tags.toLowerCase().split(/[ ,]+/); + console.log(tags); + sql_data(tags, previous_elements, renderer, res); + } else { + res.render('search_projects', { title: 'Express', json: false}); + } + +}); + +module.exports = router; |