sequelize.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. var h = require('../helper');
  2. var Promise = require('bluebird');
  3. var Sequelize = require('sequelize');
  4. var sequelize = new Sequelize('hello_world', 'benchmarkdbuser', 'benchmarkdbpass', {
  5. host: '127.0.0.1',
  6. dialect: 'mysql',
  7. logging: false
  8. });
  9. var Worlds = sequelize.define('World', {
  10. id: { type: 'Sequelize.INTEGER' },
  11. randomNumber: { type: 'Sequelize.INTEGER' }
  12. }, {
  13. timestamps: false,
  14. freezeTableName: true
  15. });
  16. var Fortunes = sequelize.define('Fortune', {
  17. id: { type: 'Sequelize.INTEGER' },
  18. message: { type: 'Sequelize.STRING' }
  19. }, {
  20. timestamps: false,
  21. freezeTableName: true
  22. });
  23. var randomWorldPromise = function() {
  24. return Worlds.findOne({
  25. where: { id: h.randomTfbNumber() }
  26. }).then(function (results) {
  27. return results;
  28. }).catch(function (err) {
  29. process.exit(1);
  30. });
  31. }
  32. module.exports = {
  33. SingleQuery: function (req, reply) {
  34. randomWorldPromise().then(function (world) {
  35. reply(world)
  36. .header('Server', 'hapi');
  37. })
  38. },
  39. MultipleQueries: function (req, reply) {
  40. var queries = h.getQueries(req);
  41. var worldPromises = [];
  42. for (var i = 0; i < queries; i++) {
  43. worldPromises.push(randomWorldPromise());
  44. }
  45. Promise.all(worldPromises).then(function (worlds) {
  46. reply(worlds)
  47. .header('Server', 'hapi');
  48. });
  49. },
  50. Fortunes: function (req, reply) {
  51. Fortunes.findAll().then(function (fortunes) {
  52. fortunes.push(h.ADDITIONAL_FORTUNE);
  53. fortunes.sort(function (a, b) {
  54. return a.message.localeCompare(b.message);
  55. });
  56. reply.view('fortunes', {
  57. fortunes: fortunes
  58. })
  59. .header('Content-Type', 'text/html')
  60. .header('Server', 'hapi');
  61. }).catch(function (err) {
  62. process.exit(1);
  63. });
  64. },
  65. Updates: function (req, reply) {
  66. var queries = h.getQueries(req);
  67. var worldPromises = [];
  68. for (var i = 0; i < queries; i++) {
  69. worldPromises.push(randomWorldPromise());
  70. }
  71. var worldUpdate = function (world) {
  72. world.randomNumber = h.randomTfbNumber();
  73. return Worlds.update(
  74. { randomNumber: world.randomNumber },
  75. { where: { id: world.id } }
  76. )
  77. .then(function (results) {
  78. return world;
  79. })
  80. .catch(function (err) {
  81. process.exit(1);
  82. });
  83. }
  84. Promise
  85. .all(worldPromises)
  86. .map(function (world) {
  87. return worldUpdate(world);
  88. })
  89. .then(function (updated) {
  90. reply(updated)
  91. .header('Server', 'hapi')
  92. })
  93. .catch(function (e) {
  94. process.exit(1);
  95. });
  96. }
  97. }