Переглянути джерело

Update deps, update Sequelize for 3.0

Zane Kansil 10 роки тому
батько
коміт
9814f0ec83

+ 49 - 34
frameworks/JavaScript/nodejs/handlers/sequelize.js

@@ -1,5 +1,7 @@
 var h = require('../helper');
-var async = require('async');
+// var async = require('async');
+var Promise = require('bluebird');
+
 var Sequelize = require('sequelize');
 var sequelize = new Sequelize('hello_world', 'benchmarkdbuser', 'benchmarkdbpass', {
   host: '127.0.0.1',
@@ -23,72 +25,85 @@ var Fortunes = sequelize.define('Fortune', {
   freezeTableName: true
 });
 
-// Sequelize Query Functions
-function sequelizeRandomWorld(callback) {
-  Worlds.findOne({
+var randomWorldPromise = function() {
+  return Worlds.findOne({
     where: { id: h.randomTfbNumber() }
-  }).complete(callback);
+  }).then(function (results) {
+    return results;
+  }).catch(function (err) {
+    process.exit(1);
+  });
 }
 
 module.exports = {
 
   SingleQuery: function (req, res) {
-    sequelizeRandomWorld(function (err, result) {
-      if (err) { return process.exit(1); }
-
+    randomWorldPromise().then(function (world) {
       h.addTfbHeaders(res, 'json');
-      res.end(JSON.stringify(result));
+      res.end(JSON.stringify(world));
     });
   },
 
   MultipleQueries: function (queries, req, res) {
-    var queryFunctions = h.fillArray(sequelizeRandomWorld, queries);
+    var worldPromises = [];
 
-    async.parallel(queryFunctions, function (err, results) {
-      if (err) { return process.exit(1); }
+    for (var i = 0; i < queries; i++) {
+      worldPromises.push(randomWorldPromise());
+    } 
 
+    Promise.all(worldPromises).then(function (worlds) {
       h.addTfbHeaders(res, 'json');
-      res.end(JSON.stringify(results));
+      res.end(JSON.stringify(worlds));
     });
   },
 
   Fortunes: function (req, res) {
-    Fortunes.findAll().complete(function (err, fortunes) {
-      if (err) { return process.exit(1); }
-
+    Fortunes.findAll().then(function (fortunes) {
       fortunes.push(h.ADDITIONAL_FORTUNE);
       fortunes.sort(function (a, b) {
         return a.message.localeCompare(b.message);
       });
+
       h.addTfbHeaders(res, 'html');
       res.end(h.fortunesTemplate({
         fortunes: fortunes
       }));
+    }).catch(function (err) {
+      console.log(err.stack);
+      process.exit(1);
     });
   },
 
   Updates: function (queries, req, res) {
-    var selectFunctions = h.fillArray(sequelizeRandomWorld, queries);
-
-    async.parallel(selectFunctions, function (err, worlds) {
-      if (err) { return process.exit(1); }
-
-      var updateFunctions = [];
-
-      for (var i = 0; i < queries; i++) {
-        (function (i) {
-          updateFunctions.push(function (callback) {
-            worlds[i].randomNumber = h.randomTfbNumber();
-            worlds[i].save().complete(callback);
-          });
-        })(i);
-      }
+    var worldPromises = [];
+
+    for (var i = 0; i < queries; i++) {
+      worldPromises.push(randomWorldPromise());
+    }
+
+    var worldUpdate = function(world) {
+      world.randomNumber = h.randomTfbNumber();
+
+      return Worlds.update({
+        randomNumber: world.randomNumber
+      },
+      {
+        where: { id: world.id }
+      }).then(function (results) {
+        return world;
+      }).catch(function (err) {
+        process.exit(1);
+      });
+    }
 
-      async.parallel(updateFunctions, function (err, updates) {
-        if (err) { return process.exit(1); }
+    Promise.all(worldPromises).then(function (worlds) {
+      var updates = worlds.map(function (e) {
+        return worldUpdate(e);
+      });
 
+      Promise.all(updates).then(function (updated) {
         h.addTfbHeaders(res, 'json');
-        res.end(JSON.stringify(updates));
+        res.end(JSON.stringify(updated));
       });
     });
   }

+ 6 - 5
frameworks/JavaScript/nodejs/package.json

@@ -3,15 +3,16 @@
   "version": "0.0.1",
   "private": true,
   "dependencies": {
-    "async": "0.9.0",
+    "async": "1.2.0",
+    "bluebird": "^2.9.27",
     "handlebars": "^3.0.3",
     "hiredis": "^0.4.0",
-    "mongodb": "2.0.27",
-    "mongoose": "4.0.1",
-    "mysql": "2.6.2",
+    "mongodb": "2.0.33",
+    "mongoose": "4.0.4",
+    "mysql": "2.7.0",
     "parseurl": "^1.3.0",
     "redis": "^0.12.1",
-    "sequelize": "2.0.6"
+    "sequelize": "3.1.1"
   },
   "main": "hello.js"
 }