Bladeren bron

Do updates correctly, add Fortunes test

Zane Kansil 10 jaren geleden
bovenliggende
commit
ea7780e296

+ 60 - 14
frameworks/JavaScript/sailsjs/api/controllers/DatabaseQueryController.js

@@ -15,7 +15,8 @@ var sequelize = new Sequelize(
       min: 0,
       idle: 5000
     },
-    logging: true
+    // hide the SQL queries being run
+    logging: false
   });
 
 
@@ -26,34 +27,47 @@ var World = sequelize.define('World', {
 {
   // prevents sequelize from assuming the table is called 'Worlds'
   freezeTableName: true,
-  timestamps: false,
+  timestamps: false
 })
 
+
+var Fortune = sequelize.define('Fortune', {
+  id: Sequelize.INTEGER,
+  message: Sequelize.STRING
+},
+{
+  // prevents sequelize from assuming the table is called 'Worlds'
+  freezeTableName: true,
+  timestamps: false
+})
+
+
 var randomTFBnumber = function() {
   return Math.floor(Math.random() * 10000) + 1;
 }
 
+
 var worldQuery = function(callback) {
   World.findOne({
     where: { id: randomTFBnumber() }
   }).complete(callback);
 }
 
-var worldUpdate = function(callback) {
+
+var worldUpdate = function(world, callback) {
   World.update({
-      randomNumber: randomTFBnumber()
+      randomNumber: world.randomNumber
     },
     {
       where: {
-        id: randomTFBnumber()
+        id: world.id
       }
     }
   ).complete(callback);
 }
 
-module.exports = {
-
 
+module.exports = {
 
   /**
    * Test 2: Single Database Query
@@ -72,19 +86,44 @@ module.exports = {
    */
   multiple: function (req, res) {
     var queries = req.param('queries');
-    var worlds = [];
+    var toRun = [];
 
     queries = Math.min(Math.max(queries, 1), 500) || 1;
 
     for (var i = 0; i < queries; i++) {
-      worlds.push(worldQuery)
+      toRun.push(worldQuery);
     }
 
-    async.parallel(worlds, function(err, results) {
-      res.json(results);
+    async.parallel(toRun, function(err, results) {
+      if (!err) {
+        res.json(results);
+      } else {
+        res.badRequest('Unexpected failure to fetch multiple records.');
+      }
     });
   },
 
+
+  /**
+   * Test 4: Fortunes
+   */
+  fortunes: function(req, res) {
+    Fortune.findAll().then(function (fortunes) {
+      fortunes.push({
+        id: 0,
+        message: "Additional fortune added at request time."
+      });
+      fortunes.sort(function (a, b) {
+        return a.message.localeCompare(b.message);
+      });
+      return res.render('fortunes', { 'fortunes': fortunes });
+    })
+  },
+
+
+  /**
+   * Test 5: Database Updates
+   */
   updates: function(req, res) {
     var queries = req.param('queries');
     var worlds = [];
@@ -92,11 +131,18 @@ module.exports = {
     queries = Math.min(Math.max(queries, 1), 500) || 1;
 
     for (var i = 0; i < queries; i++) {
-      worlds.push(worldQuery);
+      worlds.push({
+        id: randomTFBnumber(),
+        randomNumber: randomTFBnumber()
+      });
     }
 
-    async.parallel(worlds, function(err, results) {
-      res.json(results);
+    async.map(worlds, worldUpdate, function(err, results) {
+      if (!err) {
+        res.json(worlds);
+      } else {
+        res.badRequest('Unexpected failure to update records.');
+      }
     });
   }
   

+ 5 - 4
frameworks/JavaScript/sailsjs/config/routes.js

@@ -36,10 +36,11 @@ module.exports.routes = {
     view: 'homepage'
   },
 
-  'get /json':    'JsonTestController.get',
-  'get /db':      'DatabaseQueryController.single',
-  'get /queries': 'DatabaseQueryController.multiple',
-  'get /updates': 'DatabaseQueryController.updates'
+  'get /json':     'JsonTestController.get',
+  'get /db':       'DatabaseQueryController.single',
+  'get /queries':  'DatabaseQueryController.multiple',
+  'get /fortunes': 'DatabaseQueryController.fortunes',
+  'get /updates':  'DatabaseQueryController.updates'
 
   /***************************************************************************
   *                                                                          *

+ 2 - 2
frameworks/JavaScript/sailsjs/config/views.js

@@ -30,7 +30,7 @@ module.exports.views = {
   *                                                                           *
   ****************************************************************************/
 
-  engine: 'ejs',
+  engine: 'handlebars',
 
 
   /****************************************************************************
@@ -75,7 +75,7 @@ module.exports.views = {
   *                                                                           *
   ****************************************************************************/
 
-  layout: 'layout',
+  layout: false,
 
   /****************************************************************************
   *                                                                           *

+ 1 - 0
frameworks/JavaScript/sailsjs/package.json

@@ -19,6 +19,7 @@
     "grunt-contrib-watch": "~0.5.3",
     "grunt-sails-linker": "~0.9.5",
     "grunt-sync": "~0.0.4",
+    "handlebars": "^3.0.2",
     "include-all": "~0.1.3",
     "mysql": "^2.6.2",
     "rc": "~0.5.0",

+ 21 - 0
frameworks/JavaScript/sailsjs/views/fortunes.handlebars

@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<title>Fortunes</title>
+</head>
+
+<body>
+	<table>
+		<tr>
+			<th>id</th>
+			<th>message</th>
+		</tr>
+{{#fortunes}}
+		<tr>
+			<td>{{id}}</td>
+			<td>{{message}}</td>
+		</tr>
+{{/fortunes}}
+	</table>
+</body>
+</html>