web.moon 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. lapis = require "lapis"
  2. db = require "lapis.db"
  3. import Model from require "lapis.db.model"
  4. import config from require "lapis.config"
  5. import insert from table
  6. import sort from table
  7. import min, random from math
  8. class Fortune extends Model
  9. class World extends Model
  10. class Benchmark extends lapis.Application
  11. "/": =>
  12. json: {message: "Hello, World!"}
  13. "/db": =>
  14. w = World\find random(1, 10000)
  15. return json: {id:w.id,randomNumber:w.randomnumber}
  16. "/queries": =>
  17. num_queries = tonumber(@params.queries) or 1
  18. if num_queries < 2
  19. w = World\find random(1, 10000)
  20. return json: {{id:w.id,randomNumber:w.randomnumber}}
  21. worlds = {}
  22. num_queries = min(500, num_queries)
  23. for i = 1, num_queries
  24. w = World\find random(1, 10000)
  25. insert worlds, {id:w.id,randomNumber:w.randomnumber}
  26. json: worlds
  27. "/fortunes": =>
  28. @fortunes = Fortune\select ""
  29. insert @fortunes, {id:0, message:"Additional fortune added at request time."}
  30. sort @fortunes, (a, b) -> a.message < b.message
  31. layout:false, @html ->
  32. raw '<!DOCTYPE HTML>'
  33. html ->
  34. head ->
  35. title "Fortunes"
  36. body ->
  37. element "table", ->
  38. tr ->
  39. th ->
  40. text "id"
  41. th ->
  42. text "message"
  43. for fortune in *@fortunes
  44. tr ->
  45. td ->
  46. text fortune.id
  47. td ->
  48. text fortune.message
  49. "/update": =>
  50. num_queries = tonumber(@params.queries) or 1
  51. if num_queries == 0
  52. num_queries = 1
  53. worlds = {}
  54. num_queries = min(500, num_queries)
  55. for i = 1, num_queries
  56. wid = random(1, 10000)
  57. world = World\find wid
  58. world.randomnumber = random(1, 10000)
  59. world\update "randomnumber"
  60. insert worlds, {id:world.id,randomNumber:world.randomnumber}
  61. if num_queries < 2
  62. return json: {worlds[1]}
  63. json: worlds
  64. "/plaintext": =>
  65. content_type:"text/plain", layout: false, "Hello, World!"