From 1f6b18a1974c1b53a079b21b6be39af86deb2432 Mon Sep 17 00:00:00 2001 From: Kumar Rishabh Date: Thu, 29 Jun 2017 11:54:06 +0530 Subject: VNF_Catalogue Codebase Catalogue of Open Source VNFs consist in helping the end users to get information of the VNF we can deploy on top of an OPNFV solution [Deepak]: Removed all swp files. Change-Id: Ib2ea7330e964f1b684f32aedf631accd580df968 Signed-off-by: Kumar Rishabh Signed-off-by: Deepak S --- VNF_Catalogue/routes/search_projects_results.js | 120 ++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 VNF_Catalogue/routes/search_projects_results.js (limited to 'VNF_Catalogue/routes/search_projects_results.js') 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; -- cgit 1.2.3-korg