web.moon 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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 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. num_queries = tonumber(@params.queries) or 1
  15. if num_queries < 2
  16. w = World\find random(1, 10000)
  17. return json: {id:w.id,randomNumber:w.randomnumber}
  18. worlds = {}
  19. for i = 1, num_queries
  20. w = World\find random(1, 10000)
  21. insert worlds, {id:w.id,randomNumber:w.randomnumber}
  22. json: worlds
  23. "/fortunes": =>
  24. @fortunes = Fortune\select ""
  25. insert @fortunes, {id:0, message:"Additional fortune added at request time."}
  26. sort @fortunes, (a, b) -> a.message < b.message
  27. layout:false, @html ->
  28. raw '<!DOCTYPE HTML>'
  29. html ->
  30. head ->
  31. title "Fortunes"
  32. body ->
  33. element "table", ->
  34. tr ->
  35. th ->
  36. text "id"
  37. th ->
  38. text "message"
  39. for fortune in *@fortunes
  40. tr ->
  41. td ->
  42. text fortune.id
  43. td ->
  44. text fortune.message
  45. "/update": =>
  46. num_queries = tonumber(@params.queries) or 1
  47. if num_queries == 0
  48. num_queries = 1
  49. worlds = {}
  50. for i = 1, num_queries
  51. wid = random(1, 10000)
  52. world = World\find wid
  53. world.randomnumber = random(1, 10000)
  54. world\update "randomnumber"
  55. insert worlds, {id:world.id,randomNumber:world.randomnumber}
  56. if num_queries < 2
  57. return json: worlds[1]
  58. json: worlds
  59. "/plaintext": =>
  60. content_type:"text/plain", layout: false, "Hello, World!"