sequelize-postgres.js 2.4 KB

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