Browse Source

added batch updates endpoint implementation

David Denton 8 years ago
parent
commit
5d582e6789
1 changed files with 24 additions and 6 deletions
  1. 24 6
      frameworks/Scala/fintrospect/src/main/scala/QueriesRoutes.scala

+ 24 - 6
frameworks/Scala/fintrospect/src/main/scala/QueriesRoutes.scala

@@ -27,13 +27,14 @@ object QueriesRoutes {
     case _ => None
     case _ => None
   }
   }
 
 
-  private def generateRandomId = Random.nextInt(9999) + 1
+  private def generateRandomNumber = Random.nextInt(9999) + 1
 
 
   def apply(database: Client) = {
   def apply(database: Client) = {
-    val statement = database.prepare("SELECT id, randomNumber FROM world WHERE id = ?")
+    val getStatement = database.prepare("SELECT id, randomNumber FROM world WHERE id = ?")
+    val updateStatement = database.prepare("UPDATE world SET randomNumber = ? WHERE id = ?")
 
 
-    val singleRoute = RouteSpec().at(Get) / "db" bindTo Service.mk {
-      r: Request => statement(generateRandomId)
+    val queryRoute = RouteSpec().at(Get) / "db" bindTo Service.mk {
+      r: Request => getStatement(generateRandomNumber)
         .map(toJson)
         .map(toJson)
         .map(_.map(Ok(_)).getOrElse(NotFound()).build())
         .map(_.map(Ok(_)).getOrElse(NotFound()).build())
     }
     }
@@ -45,15 +46,32 @@ object QueriesRoutes {
       .at(Get) / "queries" bindTo Service.mk {
       .at(Get) / "queries" bindTo Service.mk {
       r: Request => {
       r: Request => {
         collect(1.to((numberOfQueries <-- r).getOrElse(1))
         collect(1.to((numberOfQueries <-- r).getOrElse(1))
-          .map(i => statement(generateRandomId).map(toJson)))
+          .map(i => getStatement(generateRandomNumber).map(toJson)))
+          .map(f => f.flatMap(_.toSeq))
+          .flatMap(c => Ok(array(c)))
+      }
+    }
+
+    val updateRoute = RouteSpec()
+      .taking(numberOfQueries)
+      .at(Get) / "update" bindTo Service.mk {
+      r: Request => {
+        collect(1.to((numberOfQueries <-- r).getOrElse(1))
+          .map(i => {
+            val id = generateRandomNumber
+            updateStatement(generateRandomNumber, id)
+              .flatMap(_ => getStatement(id))
+              .map(toJson)
+          }))
           .map(f => f.flatMap(_.toSeq))
           .map(f => f.flatMap(_.toSeq))
           .flatMap(c => Ok(array(c)))
           .flatMap(c => Ok(array(c)))
       }
       }
     }
     }
 
 
     new ServerRoutes[Request, Response] {
     new ServerRoutes[Request, Response] {
-      add(singleRoute)
+      add(queryRoute)
       add(multipleRoute)
       add(multipleRoute)
+      add(updateRoute)
     }
     }
   }
   }
 }
 }