VNF_Catalogue Codebase
[samplevnf.git] / VNF_Catalogue / routes / project_profile.js
1 /*******************************************************************************
2  * Copyright (c) 2017 Kumar Rishabh and others.
3  *
4  * All rights reserved. This program and the accompanying materials
5  * are made available under the terms of the Apache License, Version 2.0
6  * which accompanies this distribution, and is available at
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *******************************************************************************/
9
10 var express = require('express');
11 var router = express.Router();
12 var async = require('async');
13
14
15 var renderer = function(res, err, results) {
16     console.log(results);
17     res.render('project_profile', { title: 'Express', json: results });
18 }
19
20 var renderer_post = function(res, err, results) {
21     console.log(results);
22     res.end(JSON.stringify(results));
23 }
24
25 var get_tags = function(result, callback) {
26     db_pool.getConnection(function(err, connection) {
27         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';
28         // TODO find why it works and not above
29         connection.query(sql_query, function (error, results, fields) {
30             console.log(results);
31             result['tags'] = results;
32             connection.release();
33             if (error) {
34                 result['tags'] = {};
35                 //throw error;
36             } else {
37                 result['tags'] = results;
38             }
39             callback(null, result);
40             //if (error) throw error;
41         });
42     });
43 }
44
45
46 var get_images = function(result, callback) {
47     db_pool.getConnection(function(err, connection) {
48         sql_query = 'select photo_url from photo where photo_id = ' + result['photo_id'];
49         // TODO find why it works here and not when declared outside the method
50         console.log(sql_query);
51         connection.query(sql_query, function (error, results, fields) {
52             console.log(results[0].photo_url);
53             //result['photo_url'] = results[0].photo_url;
54             connection.release();
55             if (error) {
56                 result['photo_url'] = false;
57                 //throw error;
58             } else {
59                 result['photo_url'] = results[0].photo_url;
60             }
61             callback(null, result);
62             //if (error) throw error;
63         });
64     });
65 }
66
67 var sql_data = function(vnf_id, renderer, res) {
68     db_pool.getConnection(function(err, connection) {
69         sql_query = 'select * from vnf where vnf_id = '+ vnf_id;
70         connection.query(sql_query, function (error, results, fields) {
71             console.log(results);
72             connection.release();
73             if (error) {
74                 console.log('connection error occurred');
75             } else {
76                 async.map(results, get_images, function(error, results) {
77                     async.map(results, get_tags, renderer.bind(null, res));
78                 });
79             }   
80             //connection.release();
81             //if (error) throw error;
82         });
83     });
84
85 }
86
87 router.get('/', function(req, res) {
88     console.log(typeof(req.param('vnf_id')));
89     var vnf_id = req.param('vnf_id');
90
91     if(vnf_id) {
92         //tags = tags.toLowerCase().split(/[ ,]+/);
93         //console.log(tags);
94         sql_data(vnf_id, renderer, res);
95     } else {
96         res.render('project_profile', { title: 'Express', json: false});
97     }
98 });
99
100 router.post('/', function(req, res) {
101     console.log(typeof(req.param('vnf_id')));
102     var vnf_id = req.param('vnf_id');
103
104     if(vnf_id) {
105         //tags = tags.toLowerCase().split(/[ ,]+/);
106         //console.log(tags);
107         sql_data(vnf_id, renderer_post, res);
108     } else {
109         res.end('{"error" : "VNF Project could not get loaded", "status" : 500}');
110
111     }
112 });
113
114
115 module.exports = router;