|
@@ -5,8 +5,8 @@ var cluster = require('cluster')
|
|
, Sequelize = require('sequelize')
|
|
, Sequelize = require('sequelize')
|
|
, mysql = require('mysql')
|
|
, mysql = require('mysql')
|
|
, async = require('async')
|
|
, async = require('async')
|
|
- , mongoose = require('mongoose')
|
|
|
|
- , conn = mongoose.connect('mongodb://127.0.0.1/hello_world')
|
|
|
|
|
|
+ , Mongoose = require('mongoose')
|
|
|
|
+ , conn = Mongoose.connect('mongodb://127.0.0.1/hello_world')
|
|
, MongoClient = require('mongodb').MongoClient
|
|
, MongoClient = require('mongodb').MongoClient
|
|
, Handlebars = require('handlebars');
|
|
, Handlebars = require('handlebars');
|
|
|
|
|
|
@@ -26,13 +26,23 @@ var connection = mysql.createConnection({
|
|
connection.connect();
|
|
connection.connect();
|
|
|
|
|
|
// Mongoose Setup
|
|
// Mongoose Setup
|
|
-var WorldSchema = new mongoose.Schema({
|
|
|
|
|
|
+var WorldSchema = new Mongoose.Schema({
|
|
id : Number,
|
|
id : Number,
|
|
randomNumber: Number
|
|
randomNumber: Number
|
|
}, {
|
|
}, {
|
|
collection: 'world'
|
|
collection: 'world'
|
|
- }),
|
|
|
|
- MWorld = conn.model('World', WorldSchema);
|
|
|
|
|
|
+ });
|
|
|
|
+var FortuneSchema = new Mongoose.Schema({
|
|
|
|
+ id: Number,
|
|
|
|
+ message: String
|
|
|
|
+ }, {
|
|
|
|
+ collection: 'fortune'
|
|
|
|
+ });
|
|
|
|
+var mongoose = {
|
|
|
|
+ World: conn.model('World', WorldSchema),
|
|
|
|
+ Fortune: conn.model('Fortune', FortuneSchema)
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
|
|
// Sequelize Setup
|
|
// Sequelize Setup
|
|
var sequelize = new Sequelize('hello_world', 'benchmarkdbuser', 'benchmarkdbpass', {
|
|
var sequelize = new Sequelize('hello_world', 'benchmarkdbuser', 'benchmarkdbpass', {
|
|
@@ -66,7 +76,7 @@ var Fortune = sequelize.define('Fortune', {
|
|
});
|
|
});
|
|
|
|
|
|
// Fortunes template via handlebars setup
|
|
// Fortunes template via handlebars setup
|
|
-var FORTUNES_TEMPLATE = [
|
|
|
|
|
|
+var fortunesTemplate = Handlebars.compile([
|
|
"<!DOCTYPE html>",
|
|
"<!DOCTYPE html>",
|
|
"<html>",
|
|
"<html>",
|
|
"<head><title>Fortunes</title></head>",
|
|
"<head><title>Fortunes</title></head>",
|
|
@@ -85,7 +95,7 @@ var FORTUNES_TEMPLATE = [
|
|
"</table>",
|
|
"</table>",
|
|
"</body>",
|
|
"</body>",
|
|
"</html>"
|
|
"</html>"
|
|
-].join('');
|
|
|
|
|
|
+].join(''));
|
|
|
|
|
|
// Helper functions
|
|
// Helper functions
|
|
function getRandomNumber() {
|
|
function getRandomNumber() {
|
|
@@ -117,14 +127,20 @@ function addTfbHeaders(res, headerType) {
|
|
}
|
|
}
|
|
|
|
|
|
// Mongoose Query Functions
|
|
// Mongoose Query Functions
|
|
-function mongooseQuery(callback) {
|
|
|
|
- MWorld.findOne({
|
|
|
|
|
|
+function mongooseRandomWorld(callback) {
|
|
|
|
+ mongoose.World.findOne({
|
|
id: getRandomNumber()
|
|
id: getRandomNumber()
|
|
}).exec(function (err, world) {
|
|
}).exec(function (err, world) {
|
|
callback(err, world);
|
|
callback(err, world);
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+function mongooseGetAllFortunes(callback) {
|
|
|
|
+ mongoose.Fortune.find({}).exec(function (err, fortunes) {
|
|
|
|
+ callback(err, fortunes);
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
+
|
|
// MongoDB-Raw Query Functions
|
|
// MongoDB-Raw Query Functions
|
|
function mongodbDriverQuery(callback) {
|
|
function mongodbDriverQuery(callback) {
|
|
collection.findOne({
|
|
collection.findOne({
|
|
@@ -202,7 +218,7 @@ var responses = {
|
|
},
|
|
},
|
|
|
|
|
|
mongooseSingleQuery: function (req, res) {
|
|
mongooseSingleQuery: function (req, res) {
|
|
- mongooseQuery(function (err, result) {
|
|
|
|
|
|
+ mongooseRandomWorld(function (err, result) {
|
|
if (err) { throw err; }
|
|
if (err) { throw err; }
|
|
addTfbHeaders(res, 'json');
|
|
addTfbHeaders(res, 'json');
|
|
res.end(JSON.stringify(result));
|
|
res.end(JSON.stringify(result));
|
|
@@ -210,7 +226,7 @@ var responses = {
|
|
},
|
|
},
|
|
|
|
|
|
mongooseMultipleQueries: function (queries, req, res) {
|
|
mongooseMultipleQueries: function (queries, req, res) {
|
|
- var queryFunctions = fillArray(mongooseQuery, queries)
|
|
|
|
|
|
+ var queryFunctions = fillArray(mongooseRandomWorld, queries)
|
|
|
|
|
|
async.parallel(queryFunctions, function (err, results) {
|
|
async.parallel(queryFunctions, function (err, results) {
|
|
if (err) { throw err; }
|
|
if (err) { throw err; }
|
|
@@ -219,8 +235,22 @@ var responses = {
|
|
});
|
|
});
|
|
},
|
|
},
|
|
|
|
|
|
|
|
+ mongooseFortunes: function (req, res) {
|
|
|
|
+ mongooseGetAllFortunes(function (err, fortunes) {
|
|
|
|
+ if (err) { throw err; }
|
|
|
|
+ fortunes.push(ADDITIONAL_FORTUNE);
|
|
|
|
+ fortunes.sort(function (a, b) {
|
|
|
|
+ return a.message.localeCompare(b.message);
|
|
|
|
+ });
|
|
|
|
+ addTfbHeaders(res, 'html');
|
|
|
|
+ res.end(fortunesTemplate({
|
|
|
|
+ fortunes: fortunes
|
|
|
|
+ }))
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+
|
|
mongooseUpdates: function (queries, req, res) {
|
|
mongooseUpdates: function (queries, req, res) {
|
|
- var selectFunctions = fillArray(mongooseQuery, queries);
|
|
|
|
|
|
+ var selectFunctions = fillArray(mongooseRandomWorld, queries);
|
|
|
|
|
|
async.parallel(selectFunctions, function (err, worlds) {
|
|
async.parallel(selectFunctions, function (err, worlds) {
|
|
var updateFunctions = [];
|
|
var updateFunctions = [];
|
|
@@ -229,7 +259,7 @@ var responses = {
|
|
(function (i) {
|
|
(function (i) {
|
|
updateFunctions.push(function (callback) {
|
|
updateFunctions.push(function (callback) {
|
|
worlds[i].randomNumber = getRandomNumber();
|
|
worlds[i].randomNumber = getRandomNumber();
|
|
- MWorld.update({
|
|
|
|
|
|
+ mongoose.World.update({
|
|
id: worlds[i].id
|
|
id: worlds[i].id
|
|
}, {
|
|
}, {
|
|
randomNumber: worlds[i].randomNumber
|
|
randomNumber: worlds[i].randomNumber
|
|
@@ -301,8 +331,7 @@ var responses = {
|
|
return a.message.localeCompare(b.message);
|
|
return a.message.localeCompare(b.message);
|
|
});
|
|
});
|
|
addTfbHeaders(res, 'html');
|
|
addTfbHeaders(res, 'html');
|
|
- var template = Handlebars.compile(FORTUNES_TEMPLATE);
|
|
|
|
- res.end(template({
|
|
|
|
|
|
+ res.end(fortunesTemplate({
|
|
fortunes: fortunes
|
|
fortunes: fortunes
|
|
}));
|
|
}));
|
|
});
|
|
});
|
|
@@ -390,6 +419,8 @@ if (cluster.isMaster) {
|
|
// No queries parameter required
|
|
// No queries parameter required
|
|
} else if (route === '/mongoose/db') {
|
|
} else if (route === '/mongoose/db') {
|
|
return responses.mongooseSingleQuery(req, res);
|
|
return responses.mongooseSingleQuery(req, res);
|
|
|
|
+ } else if (route === '/mongoose/fortunes') {
|
|
|
|
+ return responses.mongooseFortunes(req, res);
|
|
} else if (route === '/mongodb/db') {
|
|
} else if (route === '/mongodb/db') {
|
|
return responses.mongodbSingleQuery(req, res);
|
|
return responses.mongodbSingleQuery(req, res);
|
|
} else if (route === '/mysql-orm/db') {
|
|
} else if (route === '/mysql-orm/db') {
|