views.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. const {Application} = require("stick");
  2. const fs = require('fs');
  3. const response = require('ringo/jsgi/response');
  4. const models = require('./models');
  5. const { Template } = require('reinhardt/template');
  6. const fortuneTemplate = module.singleton('fortuneTemplate', function() {
  7. return new Template(fs.read(module.resolve('../templates/fortunes.reinhardt')));
  8. });
  9. const app = exports.app = Application();
  10. const formatQueries = function(queries) {
  11. queries = parseInt(queries, 10) || 1;
  12. if (isNaN(queries) || queries < 1) {
  13. queries = 1;
  14. } else if (queries > 500) {
  15. queries = 500;
  16. }
  17. return queries;
  18. };
  19. app.configure("params", "route");
  20. app.get('/json', function() {
  21. const helloObject = {message: "Hello, World!"};
  22. return response.json(helloObject);
  23. });
  24. app.get('/db', function() {
  25. let randId = ((Math.random() * 10000) | 0) + 1;
  26. let world = models.store.query('select * from World where id = :id', {id: randId})[0];
  27. return response.json(world);
  28. });
  29. app.get('/dbquery/:queries?', function(request, queries) {
  30. queries = formatQueries(queries);
  31. let worlds = [];
  32. for (let i = 0; i < queries; i++) {
  33. let randId = ((Math.random() * 10000) | 0) + 1;
  34. let world = models.store.query('select * from World where id = :id', {id: randId})[0];
  35. worlds.push({"id": world.id, "randomNumber" : world.randomNumber});
  36. }
  37. return response.json(worlds);
  38. });
  39. app.get('/fortune', function() {
  40. const fortunes = models.store.query('select Fortune.* from Fortune');
  41. fortunes.push({
  42. id: 0,
  43. message: 'Additional fortune added at request time.'
  44. });
  45. fortunes.sort(models.Fortune.sort);
  46. return response.html(fortuneTemplate.render({fortunes: fortunes}));
  47. });
  48. app.get('/plaintext', function() {
  49. return response.text('Hello, World!');
  50. });
  51. app.get('/updates/:queries?', function(request, queries) {
  52. queries = formatQueries(queries);
  53. const worlds = [];
  54. for (let i = 0; i < queries; i++) {
  55. let randId = ((Math.random() * 10000) | 0) + 1;
  56. let world = models.store.query('select * from World where id = :id', {id: randId})[0];
  57. world.randomNumber = ((Math.random() * 10000) | 0) + 1;
  58. try {
  59. world.save();
  60. } catch (e) {
  61. return response.error('SQL error');
  62. }
  63. worlds.push({"id": world.id, "randomNumber": world.randomNumber});
  64. }
  65. return response.json(worlds);
  66. });