sequelize-postgres.js 2.4 KB

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