123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- import json, random, algorithm, cgi, sugar, sequtils
- from strutils import parseInt
- # framework
- import basolato/controller
- import allographer/query_builder
- # view
- import ../../resources/pages/fortune_view
- type BenchmarkController* = ref object of Controller
- proc newBenchmarkController*(request:Request):BenchmarkController =
- randomize()
- return BenchmarkController.newController(request)
- proc json*(this:BenchmarkController):Response =
- return render(%*{"message":"Hello, World!"})
- proc plainText*(this:BenchmarkController):Response =
- var headers = newHeaders()
- headers.set("Content-Type", "text/plain; charset=UTF-8")
- return render("Hello, World!").setHeader(headers)
- proc db*(this:BenchmarkController):Response =
- let i = rand(1..10000)
- let response = RDB().table("world").find(i)
- return render(%*response)
- proc query*(this:BenchmarkController):Response =
- var countNum:int
- try:
- countNum = this.request.params["queries"].parseInt()
- except:
- countNum = 1
- if countNum < 1:
- countNum = 1
- elif countNum > 500:
- countNum = 500
- var response = newJArray()
- for _ in 1..countNum:
- let i = rand(1..10000)
- let data = RDB().table("world").find(i)
- response.add(data)
- return render(%*response)
- proc fortune*(this:BenchmarkController):Response =
- var rows = RDB().table("Fortune").orderBy("message", Asc).get()
- rows = rows.mapIt(%*{
- "id": it["id"],
- "message": xmlEncode(it["message"].getStr)
- })
- rows.add(%*{
- "id": 0,
- "message": "Additional fortune added at request time."}
- )
- rows = rows.sortedByIt(it["message"].getStr)
- return render(this.view.fortuneView(rows))
- proc update*(this:BenchmarkController):Response =
- var countNum:int
- try:
- countNum = this.request.params["queries"].parseInt()
- except:
- countNum = 1
- if countNum < 1:
- countNum = 1
- elif countNum > 500:
- countNum = 500
- var response = newJArray()
- transaction:
- for _ in 1..countNum:
- let i = rand(1..10000)
- let newRandomNumber = rand(1..10000)
- discard RDB().table("world").find(i)
- RDB().table("world").where("id", "=", i).update(%*{"randomNumber": newRandomNumber})
- response.add(%*{"id":i, "randomNumber": newRandomNumber})
- return render(response)
|