Browse Source

Implemented update handler

Edward Bramanti 10 years ago
parent
commit
af67a565d9
1 changed files with 44 additions and 3 deletions
  1. 44 3
      frameworks/JavaScript/koa/app.js

+ 44 - 3
frameworks/JavaScript/koa/app.js

@@ -28,9 +28,29 @@ if (cluster.isMaster) {
   app.use(route.get('/db', dbHandler));
   app.use(route.get('/db', dbHandler));
   app.use(route.get('/queries', queriesHandler));
   app.use(route.get('/queries', queriesHandler));
   // app.use(route.get('/fortune', fortuneHandler));
   // app.use(route.get('/fortune', fortuneHandler));
-  // app.use(route.get('/update', updateHandler));
+  app.use(route.get('/update', updateHandler));
   app.use(route.get('/plaintext', textHandler));
   app.use(route.get('/plaintext', textHandler));
 
 
+  // Helper
+  function getRandomNumber() {return Math.floor(Math.random()*10000) + 1;};
+
+  // Query Helpers
+  function *worldUpdateQuery() {
+    var randomId = getRandomNumber();
+    var randomNumber = getRandomNumber();
+    var result = yield function(callback) {
+        this.mongo.collection('world').update(
+          {id: randomId},
+          {randomNumber: randomNumber}, 
+          callback
+        );
+    }
+    return {
+      id: randomId,
+      randomNumber: randomNumber
+    }
+  }
+
   function *worldQuery() {
   function *worldQuery() {
     return yield function(callback) {
     return yield function(callback) {
         var randomId = {id: Math.floor(Math.random()*10000) + 1};
         var randomId = {id: Math.floor(Math.random()*10000) + 1};
@@ -38,6 +58,8 @@ if (cluster.isMaster) {
     }
     }
   }
   }
 
 
+  // Route handlers
+
   function *jsonHandler() {
   function *jsonHandler() {
     this.response.body = {
     this.response.body = {
       message: "Hello, world!"
       message: "Hello, world!"
@@ -49,16 +71,35 @@ if (cluster.isMaster) {
   }
   }
 
 
   function *queriesHandler() {
   function *queriesHandler() {
-    var numOfQueries = this.query.queries || 1,
+    var numOfQueries = isNaN(this.query.queries) ? 1 : this.query.queries,
         queries = [];
         queries = [];
+    if (numOfQueries > 500) {
+      numOfQueries = 500;
+    } else if (numOfQueries < 1) {
+      numOfQueries = 1;
+    }
     for (var i = 0; i < numOfQueries; i++) {
     for (var i = 0; i < numOfQueries; i++) {
       queries.push(worldQuery);
       queries.push(worldQuery);
     }
     }
     this.body = yield queries;
     this.body = yield queries;
   }
   }
 
 
+  function *updateHandler() {
+    var numOfUpdates = isNaN(this.query.queries) ? 1 : this.query.queries,
+    queries = [];
+    if (numOfUpdates > 500) {
+      numOfUpdates = 500;
+    } else if (numOfUpdates < 1) {
+      numOfUpdates = 1;
+    }
+    for (var i = 0; i < numOfUpdates; i++) {
+      queries.push(worldUpdateQuery);
+    }
+    this.body = yield queries;
+  }
+
   function *textHandler() {
   function *textHandler() {
     this.body = 'Hello, world!'
     this.body = 'Hello, world!'
   }
   }
-  app.listen(3000); //used for local testing
+  app.listen(8080); //used for local testing
 }
 }