sequelize-postgres.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. // Connects to Postgres using the sequelize driver
  2. // Handles related routes
  3. const helper = require('../helper');
  4. const Sequelize = require('sequelize');
  5. const sequelize = new Sequelize('hello_world', 'benchmarkdbuser', 'benchmarkdbpass', {
  6. host: 'tfb-database',
  7. dialect: 'postgres',
  8. logging: false
  9. });
  10. const Worlds = sequelize.define('World', {
  11. id: {
  12. type: 'Sequelize.INTEGER',
  13. primaryKey: true
  14. },
  15. randomnumber: { type: 'Sequelize.INTEGER' }
  16. }, {
  17. timestamps: false,
  18. freezeTableName: true
  19. });
  20. const Fortunes = sequelize.define('fortune', {
  21. id: {
  22. type: 'Sequelize.INTEGER',
  23. primaryKey: true
  24. },
  25. message: { type: 'Sequelize.STRING' }
  26. }, {
  27. timestamps: false,
  28. freezeTableName: true
  29. });
  30. const randomWorld = () => Worlds.findOne({ where: { id: helper.randomTfbNumber() } });
  31. module.exports = {
  32. SingleQuery: async (request, h) => {
  33. return h.response(await randomWorld())
  34. .header('Content-Type', 'application/json')
  35. .header('Server', 'hapi');
  36. },
  37. MultipleQueries: async (request, h) => {
  38. const queries = helper.getQueries(request);
  39. const results = [];
  40. for (let i = 0; i < queries; i++) {
  41. results.push(await randomWorld());
  42. }
  43. return h.response(results)
  44. .header('Content-Type', 'application/json')
  45. .header('Server', 'hapi');
  46. },
  47. Fortunes: async (request, h) => {
  48. try {
  49. const fortunes = await Fortunes.findAll()
  50. fortunes.push(helper.additionalFortune());
  51. fortunes.sort((a, b) => a.message.localeCompare(b.message));
  52. return h.view('fortunes', { fortunes })
  53. .header('Content-Type', 'text/html')
  54. .header('Server', 'hapi');
  55. } catch (err) {
  56. process.exit(1)
  57. }
  58. },
  59. Updates: async (request, h) => {
  60. const queries = helper.getQueries(request);
  61. const results = [];
  62. for (let i = 0; i < queries; i++) {
  63. const world = await randomWorld();
  64. world.randomnumber = helper.randomTfbNumber();
  65. await Worlds.update(
  66. { randomnumber: world.randomnumber },
  67. { where: { id: world.id } }
  68. );
  69. results.push(world);
  70. }
  71. return h.response(results)
  72. .header('Content-Type', 'application/json')
  73. .header('Server', 'hapi');
  74. }
  75. };