sequelize.js 2.5 KB

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