views.js 2.1 KB

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