sequelize-postgres.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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: 'postgres',
  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, res) {
  34. randomWorldPromise().then(function (world) {
  35. h.addTfbHeaders(res, 'json');
  36. res.end(JSON.stringify(world));
  37. });
  38. },
  39. MultipleQueries: function (queries, req, res) {
  40. var worldPromises = [];
  41. for (var i = 0; i < queries; i++) {
  42. worldPromises.push(randomWorldPromise());
  43. }
  44. Promise.all(worldPromises).then(function (worlds) {
  45. h.addTfbHeaders(res, 'json');
  46. res.end(JSON.stringify(worlds));
  47. });
  48. },
  49. Fortunes: function (req, res) {
  50. Fortunes.findAll().then(function (fortunes) {
  51. fortunes.push(h.ADDITIONAL_FORTUNE);
  52. fortunes.sort(function (a, b) {
  53. return a.message.localeCompare(b.message);
  54. });
  55. h.addTfbHeaders(res, 'html');
  56. res.end(h.fortunesTemplate({
  57. fortunes: fortunes
  58. }));
  59. }).catch(function (err) {
  60. console.log(err.stack);
  61. process.exit(1);
  62. });
  63. },
  64. Updates: function (queries, req, res) {
  65. var worldPromises = [];
  66. for (var i = 0; i < queries; i++) {
  67. worldPromises.push(randomWorldPromise());
  68. }
  69. var worldUpdate = function(world) {
  70. world.randomNumber = h.randomTfbNumber();
  71. return Worlds.update({
  72. randomNumber: world.randomNumber
  73. },
  74. {
  75. where: { id: world.id }
  76. }).then(function (results) {
  77. return world;
  78. }).catch(function (err) {
  79. process.exit(1);
  80. });
  81. }
  82. Promise.all(worldPromises).then(function (worlds) {
  83. var updates = worlds.map(function (e) {
  84. return worldUpdate(e);
  85. });
  86. Promise.all(updates).then(function (updated) {
  87. h.addTfbHeaders(res, 'json');
  88. res.end(JSON.stringify(updated));
  89. });
  90. });
  91. }
  92. }