sequelize.js 2.4 KB

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