sequelize.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. var h = require('../helper');
  2. // var async = require('async');
  3. var Promise = require('bluebird');
  4. var Sequelize = require('sequelize');
  5. var sequelize = new Sequelize('hello_world', 'benchmarkdbuser', 'benchmarkdbpass', {
  6. host: '127.0.0.1',
  7. dialect: 'mysql',
  8. logging: false
  9. });
  10. var Worlds = sequelize.define('World', {
  11. id: { type: 'Sequelize.INTEGER' },
  12. randomNumber: { type: 'Sequelize.INTEGER' }
  13. }, {
  14. timestamps: false,
  15. freezeTableName: true
  16. });
  17. var Fortunes = sequelize.define('Fortune', {
  18. id: { type: 'Sequelize.INTEGER' },
  19. message: { type: 'Sequelize.STRING' }
  20. }, {
  21. timestamps: false,
  22. freezeTableName: true
  23. });
  24. var randomWorldPromise = function() {
  25. return Worlds.findOne({
  26. where: { id: h.randomTfbNumber() }
  27. }).then(function (results) {
  28. return results;
  29. }).catch(function (err) {
  30. process.exit(1);
  31. });
  32. }
  33. module.exports = {
  34. SingleQuery: function (req, res) {
  35. randomWorldPromise().then(function (world) {
  36. h.addTfbHeaders(res, 'json');
  37. res.end(JSON.stringify(world));
  38. });
  39. },
  40. MultipleQueries: function (queries, req, res) {
  41. var worldPromises = [];
  42. for (var i = 0; i < queries; i++) {
  43. worldPromises.push(randomWorldPromise());
  44. }
  45. Promise.all(worldPromises).then(function (worlds) {
  46. h.addTfbHeaders(res, 'json');
  47. res.end(JSON.stringify(worlds));
  48. });
  49. },
  50. Fortunes: function (req, res) {
  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. h.addTfbHeaders(res, 'html');
  57. res.end(h.fortunesTemplate({
  58. fortunes: fortunes
  59. }));
  60. }).catch(function (err) {
  61. console.log(err.stack);
  62. process.exit(1);
  63. });
  64. },
  65. Updates: function (queries, req, res) {
  66. var worldPromises = [];
  67. for (var i = 0; i < queries; i++) {
  68. worldPromises.push(randomWorldPromise());
  69. }
  70. var worldUpdate = function(world) {
  71. world.randomNumber = h.randomTfbNumber();
  72. return Worlds.update({
  73. randomNumber: world.randomNumber
  74. },
  75. {
  76. where: { id: world.id }
  77. }).then(function (results) {
  78. return world;
  79. }).catch(function (err) {
  80. process.exit(1);
  81. });
  82. }
  83. Promise.all(worldPromises).then(function (worlds) {
  84. var updates = worlds.map(function (e) {
  85. return worldUpdate(e);
  86. });
  87. Promise.all(updates).then(function (updated) {
  88. h.addTfbHeaders(res, 'json');
  89. res.end(JSON.stringify(updated));
  90. });
  91. });
  92. }
  93. }