postgresql-app.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. const express = require('express'),
  2. app = express(),
  3. bodyParser = require('body-parser'),
  4. pgp = require('pg-promise')(),
  5. helper = require('./helper');
  6. const connection = {
  7. db: 'hello_world',
  8. username: 'benchmarkdbuser',
  9. password: 'benchmarkdbpass',
  10. host: 'tfb-database',
  11. dialect: 'postgres'
  12. }
  13. const db = pgp(`postgres://${connection.username}:${connection.password}@${connection.host}:5432/${connection.db}`);
  14. app.set('view engine', 'pug');
  15. app.set('views', __dirname + '/views');
  16. app.use(bodyParser.urlencoded({ extended: true }));
  17. app.use(bodyParser.json());
  18. // Set headers for all routes
  19. app.use((req, res, next) => {
  20. res.setHeader("Server", "Express");
  21. return next();
  22. });
  23. // Routes
  24. app.get('/db', async (req, res) => {
  25. let world = await getRandomWorld();
  26. res.setHeader("Content-Type", "application/json");
  27. res.json(world);
  28. });
  29. app.get('/queries', async (req, res) => {
  30. const results = [],
  31. queries = Math.min(parseInt(req.query.queries) || 1, 500);
  32. for (let i = 0; i < queries; i++) {
  33. results.push(await getRandomWorld());
  34. }
  35. res.json(results)
  36. });
  37. app.get('/fortunes', async (req, res) => {
  38. let fortunes = await getAllFortunes()
  39. const newFortune = { id: 0, message: "Additional fortune added at request time." };
  40. fortunes.push(newFortune);
  41. fortunes.sort((a, b) => (a.message < b.message) ? -1 : 1);
  42. res.render('fortunes/index', { fortunes: fortunes });
  43. });
  44. app.get('/updates', async (req, res) => {
  45. const results = [],
  46. queries = Math.min(parseInt(req.query.queries) || 1, 500);
  47. for (let i = 1; i <= queries; i++) {
  48. results.push(await updateRandomWorld())
  49. }
  50. res.json(results);
  51. });
  52. const getRandomWorld = async () => {
  53. return await db.one(`select * from world where id = ${helper.randomizeNum()}`, [true])
  54. };
  55. const updateRandomWorld = async () => {
  56. return await db.oneOrNone(`update world set randomNumber = ${helper.randomizeNum()} where id = ${helper.randomizeNum()} returning id, randomNumber`, [true])
  57. };
  58. const getAllFortunes = async () => {
  59. return await db.many('select * from fortune', [true]);
  60. };
  61. app.listen(8080, () => {
  62. console.log('listening on port 8080');
  63. });