mysql-raw.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. const h = require('../helper');
  2. const async = require('async');
  3. const mysql = require('mysql');
  4. const connection = mysql.createConnection({
  5. host : 'TFB-database',
  6. user : 'benchmarkdbuser',
  7. password : 'benchmarkdbpass',
  8. database : 'hello_world'
  9. });
  10. connection.connect();
  11. const queries = {
  12. RANDOM_WORLD: "SELECT * FROM world WHERE id = " + h.randomTfbNumber(),
  13. ALL_FORTUNES: "SELECT * FROM fortune",
  14. UPDATE_WORLD: (rows) => {
  15. return [
  16. "UPDATE world SET randomNumber = ", rows[0].randomNumber,
  17. " WHERE id = ", rows[0]['id']
  18. ].join('');
  19. }
  20. };
  21. const mysqlRandomWorld = (callback) =>
  22. connection.query(queries.RANDOM_WORLD, (err, rows, fields) => {
  23. callback(err, rows[0]);
  24. });
  25. const mysqlGetAllFortunes = (callback) =>
  26. connection.query(queries.ALL_FORTUNES, (err, rows, fields) => {
  27. callback(err, rows);
  28. });
  29. const mysqlUpdateQuery = (callback) =>
  30. connection.query(queries.RANDOM_WORLD, (err, rows, fields) => {
  31. if (err) { return process.exit(1); }
  32. rows[0].randomNumber = h.randomTfbNumber();
  33. const updateQuery = queries.UPDATE_WORLD(rows);
  34. connection.query(updateQuery, (err, result) => {
  35. callback(err, rows[0]);
  36. });
  37. });
  38. module.exports = {
  39. SingleQuery: (req, res) => {
  40. mysqlRandomWorld((err, result) => {
  41. if (err) { return process.exit(1); }
  42. h.addTfbHeaders(res, 'json');
  43. res.end(JSON.stringify(result));
  44. });
  45. },
  46. MultipleQueries: (queries, req, res) => {
  47. const queryFunctions = h.fillArray(mysqlRandomWorld, queries);
  48. async.parallel(queryFunctions, (err, results) => {
  49. if (err) { return process.exit(1); }
  50. h.addTfbHeaders(res, 'json');
  51. res.end(JSON.stringify(results));
  52. });
  53. },
  54. Fortunes: (req, res) => {
  55. mysqlGetAllFortunes((err, fortunes) => {
  56. if (err) { return process.exit(1); }
  57. fortunes.push(h.additionalFortune());
  58. fortunes.sort((a, b) => a.message.localeCompare(b.message));
  59. h.addTfbHeaders(res, 'html');
  60. res.end(h.fortunesTemplate({
  61. fortunes: fortunes
  62. }));
  63. });
  64. },
  65. Updates: (queries, req, res) => {
  66. const queryFunctions = h.fillArray(mysqlUpdateQuery, queries);
  67. async.parallel(queryFunctions, (err, results) => {
  68. if (err) { return process.exit(1); }
  69. h.addTfbHeaders(res, 'json');
  70. res.end(JSON.stringify(results));
  71. });
  72. }
  73. };