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