sequelize-postgres.js 2.3 KB

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