Skip to content

Commit 97bb22f

Browse files
committed
Upgrade all the packages. Bunch of Mongo 2.0 driver changes
1 parent ebc0a87 commit 97bb22f

File tree

10 files changed

+211
-233
lines changed

10 files changed

+211
-233
lines changed

app.js

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
// */
55

66
var express = require('express'),
7+
bodyParser = require('body-parser'),
78
drataRepository = require('./repositories/drataRepository'),
89
controller = require('./routes/externaldatacontroller'),
910
http = require('http'),
@@ -18,29 +19,25 @@ var serverNames = config.dataSources.map(function(d){
1819
return d.alias;
1920
});
2021

21-
app.configure(function () {
22-
//app.use(express.logger('dev')); /* 'default', 'short', 'tiny', 'dev' */
23-
//app.use(express.bodyParser());
24-
app.use(express.json());
25-
app.use(express.urlencoded());
26-
app.use(express.static(path.join(__dirname, 'content')));
27-
});
22+
app.use(bodyParser.json());
23+
app.use(bodyParser.urlencoded({ extended: true}));
24+
app.use(express.static(path.join(__dirname, 'content')));
2825

2926
app.set('port',process.env.PORT || 3000);
3027

3128
app.get('/dashboard/:dashboardId', function(req, res) {
3229
logger.logRequest(req, { pageId: 'dashboard'});
33-
res.sendfile('dash.html');
30+
res.sendFile('/dash.html', { root: __dirname });
3431
});
3532

3633
app.get('/dashboard', function(req, res) {
3734
logger.logRequest(req, { pageId: 'dashboard manager'});
38-
res.sendfile('dash.html');
35+
res.sendFile('/dash.html', { root: __dirname });
3936
});
4037

4138
app.get('/', function(req, res) {
4239
logger.logRequest(req, { pageId: 'homepage'});
43-
res.sendfile('homepage.html');
40+
res.sendFile('homepage.html', { root: __dirname });
4441
});
4542

4643
app.get('/api/databasepop', controller.databasepop);
@@ -61,13 +58,14 @@ app.get('/api/dashboards', drataRepository.getAllDashboards);
6158
app.get('/api/truncatedata', drataRepository.truncateData);
6259
app.get('/api/generateDemoDashboard', drataRepository.generateDemoDashboard);
6360
app.post('/api/widgets', drataRepository.getWidgets);
64-
//update dashboard
65-
app.post('/api/dashboard', drataRepository.upsertDashboard);
6661

6762
//update dashboard
68-
app.put('/api/dashboard', drataRepository.upsertDashboard);
63+
app.put('/api/dashboard', drataRepository.updateDashboard);
6964

70-
//update dashboard
65+
//add dashboard
66+
app.post('/api/dashboard', drataRepository.addDashboard);
67+
68+
//delete dashboard
7169
app.delete('/api/dashboard/:dashboardId', drataRepository.deleteDashboard);
7270

7371
//update widget
@@ -101,5 +99,6 @@ var server = http.createServer(app);
10199
server.listen(app.get('port'), function(){
102100
console.log('Express server listening on port ' + app.get('port'));
103101
});
102+
104103
skt.initialize(server);
105104

content/js/apiClient.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,14 @@
9898
return promise;
9999
};
100100

101-
var upsertDashboard = function(model){
101+
var updateDashboard = function(model) {
102102
return _perform('PUT', apiRoot + 'dashboard',model);
103103
};
104104

105+
var addDashboard = function(model) {
106+
return _perform('POST', apiRoot + 'dashboard',model);
107+
};
108+
105109
var deleteDashboard = function(dashboardId){
106110
var url = apiRoot + drata.utils.format('dashboard/{0}', dashboardId);
107111
return _perform('DELETE',url);
@@ -218,7 +222,8 @@
218222
updateWidget: updateWidget,
219223
updateWidgetViewOptions: updateWidgetViewOptions,
220224
deleteWidget:deleteWidget,
221-
upsertDashboard: upsertDashboard,
225+
updateDashboard: updateDashboard,
226+
addDashboard: addDashboard,
222227
deleteDashboard: deleteDashboard,
223228
getAllDashboards:getAllDashboards,
224229
getAllTags: getAllTags,

content/js/controlpanel.js

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -529,7 +529,7 @@
529529

530530
this.name.subscribe(function(newValue){
531531
model.name = newValue;
532-
drata.apiClient.upsertDashboard(model);
532+
drata.apiClient.updateDashboard(model);
533533
});
534534

535535
this.cloneDashboard = function(){
@@ -680,12 +680,11 @@
680680
theme: 'default'
681681
};
682682

683-
drata.apiClient.upsertDashboard(dashboardModel).then(function(response){
684-
var _id = response._id;
683+
drata.apiClient.addDashboard(dashboardModel).then(function(dashboardId) {
685684
var tagList = self.tags.tagList(), chosenWidgets = self.chosenWidgets();
686685

687686
function redirect() {
688-
window.location.href = '/dashboard/'+ _id;
687+
window.location.href = '/dashboard/'+ dashboardId;
689688
}
690689
if(!tagList.length && !chosenWidgets.length){
691690
redirect();
@@ -694,14 +693,14 @@
694693
var prs = [];
695694

696695
tagList.forEach(function(t) {
697-
t.dashboardId = _id;
696+
t.dashboardId = dashboardId;
698697
delete t.dateCreated;
699698
prs.push(drata.apiClient.addTag(t));
700699
});
701700

702701
chosenWidgets.forEach(function(w) {
703702
var widgetModel = w.getModel();
704-
widgetModel.dashboardId = _id;
703+
widgetModel.dashboardId = dashboardId;
705704
delete widgetModel.dateCreated;
706705
delete widgetModel.dateUpdated;
707706
delete widgetModel._id;

content/js/dashboard.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@
7474
_id: dashboardId,
7575
theme: theme
7676
};
77-
drata.apiClient.upsertDashboard(model);
77+
drata.apiClient.updateDashboard(model);
7878
};
7979

8080
drata.pubsub.subscribe('themechanged', function(eventName, newTheme){

package.json

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,25 @@
66
"start": "node app.js"
77
},
88
"dependencies": {
9-
"express": "3.4.8",
10-
"node-gyp": "^1.0.1",
11-
"mssql": "^1.1.1",
12-
"socket.io": "^1.0.6",
13-
"q": "^1.0.1",
14-
"mongodb": "^1.4.38",
15-
"underscore": "^1.6.0",
16-
"ua-parser-js": "^0.7.7"
9+
"body-parser": "^1.13.2",
10+
"express": "4.13.1",
11+
"mongodb": "^2.0.39",
12+
"mssql": "^2.1.6",
13+
"node-gyp": "^2.0.2",
14+
"q": "^1.4.1",
15+
"socket.io": "^1.3.6",
16+
"ua-parser-js": "^0.7.7",
17+
"underscore": "^1.8.3"
1718
},
1819
"devDependencies": {
19-
"grunt": "~0.4.1",
20+
"grunt": "~0.4.5",
2021
"grunt-cli": "^0.1.13",
21-
"grunt-contrib-watch": "~0.5.3",
22-
"grunt-sass": "~0.8.0",
23-
"node-sass": "~0.7.0",
24-
"grunt-contrib-concat": "^0.5.0",
25-
"grunt-contrib-uglify": "^0.6.0",
26-
"mocha": "^2.0.1",
22+
"grunt-contrib-watch": "~0.6.1",
23+
"grunt-sass": "~1.0.0",
24+
"node-sass": "~3.2.0",
25+
"grunt-contrib-concat": "^0.5.1",
26+
"grunt-contrib-uglify": "^0.9.1",
27+
"mocha": "^2.2.5",
2728
"grunt-contrib-clean": "^0.6.0",
2829
"grunt-bump": "^0.3.1"
2930
}

repositories/baseMongoRepository.js

Lines changed: 50 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,79 +1,61 @@
1-
var mongo = require('mongodb');
1+
var MongoClient = require('mongodb').MongoClient;
22
var config = require('../routes/config.json');
3+
var utils = require('../utils/utils');
34
var _ = require('underscore');
45
var Q = require('q');
5-
var BSON = mongo.BSONPure;
6+
var BSON = require('mongodb').BSONPure;
67

7-
var mongoClients = {}, dbs = {};
8-
var serverNames = config.dataSources.map(function(d){
9-
return d.alias;
10-
});
8+
var dataSources = {};
119

12-
var mongoSources = config.dataSources.filter(function(d){
10+
config.dataSources.filter(function(d){
1311
return d.type === 'mongodb';
12+
}).forEach(function(dataSource) {
13+
dataSources[dataSource.alias] = dataSource;
1414
});
1515

16-
_.each(mongoSources, function(server){
17-
var instance = new mongo.MongoClient(new mongo.Server(server.serverName, server.port));
18-
instance.open(function(err, mongoClient) {
19-
if(err){
20-
console.log(server.alias + ' connection refused');
21-
}else{
22-
mongoClients[server.alias] = mongoClient;
23-
dbs[server.alias] = {};
24-
console.log('new server: ' + server.alias);
25-
}
26-
});
27-
})
16+
dataSources[config.drataInternal.alias] = config.drataInternal;
2817

29-
var connectionCount = 0;
30-
exports.dbInstance = function(){
31-
var _name, _serverName;
32-
function _connect(){
33-
var defer = Q.defer();
34-
if(!dbs[_serverName]) {
35-
if(serverNames.indexOf(_serverName) > -1){
36-
var server = _.find(config.dataSources, function(s){
37-
return s.alias === _serverName;
38-
});
39-
var instance = new mongo.MongoClient(new mongo.Server(server.serverName, server.port));
40-
instance.open(function(err, mongoClient) {
41-
if(err){
42-
console.log(_serverName + ' connection refused');
43-
defer.reject({code: 500, message:_serverName + ' connection refused'});
44-
}else{
45-
mongoClients[_serverName] = mongoClient;
46-
dbs[_serverName] = {}
47-
dbs[_serverName][_name] = mongoClient.db(_name);
48-
console.log('new server: ' + _serverName);
49-
defer.resolve(dbs[_serverName][_name]);
50-
}
51-
});
52-
}
53-
else{
54-
defer.reject({code: 500, message: _serverName +' not found'});
55-
}
56-
}
57-
else{
58-
if(!dbs[_serverName][_name]){
59-
dbs[_serverName][_name] = mongoClients[_serverName].db(_name);
60-
}
61-
defer.resolve(dbs[_serverName][_name]);
62-
}
63-
return defer.promise;
64-
};
18+
var dbInstances = {};
19+
function resetConnection (key) {
20+
if(!dbInstances[key]) return;
6521

66-
_connect.dbName = function(val){
67-
if(!_serverName) throw "Server not speficied";
68-
if (!arguments.length) return _name;
69-
_name = val;
70-
return _connect;
71-
};
22+
console.log('max connection reached.'+ key + '. Resetting..');
23+
dbInstances[key].dbInstance.close();
24+
dbInstances[key].dbInstance = undefined;
25+
dbInstances[key].connectionCount = 0;
26+
}
7227

73-
_connect.serverName = function(val){
74-
if (!arguments.length) return _serverName;
75-
_serverName = val;
76-
return _connect;
77-
};
78-
return _connect;
79-
};
28+
exports.dbInstance = function (serverName, dbName) {
29+
var defer = Q.defer();
30+
var key = serverName + dbName;
31+
var dataSource = dataSources[serverName];
32+
if(dbInstances[key] && dbInstances[key].connectionCount >= 9) {
33+
resetConnection(key);
34+
}
35+
if(dbInstances[key] && dbInstances[key].dbInstance) {
36+
dbInstances[key].connectionCount ++;
37+
defer.resolve(dbInstances[key].dbInstance);
38+
}
39+
else {
40+
var url = utils.format('mongodb://{0}:{1}/{2}', dataSource.serverName, dataSource.port, dbName);
41+
MongoClient.connect(url,
42+
{
43+
server: {
44+
poolSize: 10
45+
}
46+
}, function(err, db) {
47+
if (err) {
48+
defer.reject({ code: 500, message: err.message + '; Cannot connect to: '+ url });
49+
resetConnection(key);
50+
} else {
51+
dbInstances[key] = {
52+
dbInstance: db,
53+
connectionCount: 0
54+
}
55+
defer.resolve(db);
56+
}
57+
})
58+
}
59+
60+
return defer.promise;
61+
};

0 commit comments

Comments
 (0)