Browse Source

Add single and multiple db queries

Zane Kansil 10 years ago
parent
commit
9df69b2be1
1 changed files with 31 additions and 2 deletions
  1. 31 2
      frameworks/Crystal/moonshine/server.cr

+ 31 - 2
frameworks/Crystal/moonshine/server.cr

@@ -9,7 +9,7 @@ include Moonshine::Http
 # Compose Objects (like Hash) to have a to_json method
 require "json/to_json"
 
-redis = Redis.new
+REDIS = Redis.new
 app = Moonshine::App.new
 
 class CONTENT
@@ -26,6 +26,13 @@ app.response_middleware do |req, res|
     res
 end
 
+private def randomWorld
+  id = rand(1...10_000)
+  {
+    :id => id
+    :randomNumber => REDIS.get("world:" + id.to_s)
+  }
+end
 
 app.define do
 
@@ -36,11 +43,33 @@ app.define do
     res
   end
 
+  # Test 2: Single database query
+  route "/db", do |request|
+    res = ok(randomWorld.to_json)
+    res.headers["Content-type"] = CONTENT::JSON
+    res
+  end
+
+  # Test 3: Multiple database query
+  route "/queries", do |request|
+    queries = request.get["queries"].to_i
+    queries = 1 if queries < 1
+    queries = 500 if queries > 500
+
+    results = (1..queries).map do
+      randomWorld
+    end
+
+    res = ok(results.to_json)
+    res.headers["Content-type"] = CONTENT::JSON
+    res
+  end
+
   # Test 4: Fortunes
   route "/fortunes", do |request|
     data = [] of  Hash(Symbol, (String | Int32))
 
-    redis.lrange("fortunes", 0, -1).each_with_index do |e, i|
+    REDIS.lrange("fortunes", 0, -1).each_with_index do |e, i|
       data.push({ :id => i + 1, :message => e.to_s })
     end