mysql-raw.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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. }
  26. const mysqlGetAllFortunes = (callback) => {
  27. connection.query(queries.ALL_FORTUNES, (err, rows, fields) => {
  28. callback(err, rows);
  29. })
  30. }
  31. const mysqlUpdateQuery = (callback) => {
  32. connection.query(queries.RANDOM_WORLD, (err, rows, fields) => {
  33. if (err) { return process.exit(1); }
  34. rows[0].randomNumber = h.randomTfbNumber();
  35. const updateQuery = queries.UPDATE_WORLD(rows);
  36. connection.query(updateQuery, (err, result) => {
  37. callback(err, rows[0]);
  38. });
  39. });
  40. }
  41. module.exports = {
  42. SingleQuery: (req, res) => {
  43. mysqlRandomWorld((err, result) => {
  44. if (err) { return process.exit(1); }
  45. h.addTfbHeaders(res, 'json');
  46. res.end(JSON.stringify(result));
  47. });
  48. },
  49. MultipleQueries: (queries, req, res) => {
  50. const queryFunctions = h.fillArray(mysqlRandomWorld, queries);
  51. async.parallel(queryFunctions, (err, results) => {
  52. if (err) { return process.exit(1); }
  53. h.addTfbHeaders(res, 'json');
  54. res.end(JSON.stringify(results));
  55. });
  56. },
  57. Fortunes: (req, res) => {
  58. mysqlGetAllFortunes((err, fortunes) => {
  59. if (err) { return process.exit(1); }
  60. fortunes.push(h.ADDITIONAL_FORTUNE);
  61. fortunes.sort((a, b) => {
  62. return a.message.localeCompare(b.message);
  63. })
  64. h.addTfbHeaders(res, 'html');
  65. res.end(h.fortunesTemplate({
  66. fortunes: fortunes
  67. }));
  68. });
  69. },
  70. Updates: (queries, req, res) => {
  71. const queryFunctions = h.fillArray(mysqlUpdateQuery, queries);
  72. async.parallel(queryFunctions, (err, results) => {
  73. if (err) { return process.exit(1); }
  74. h.addTfbHeaders(res, 'json');
  75. res.end(JSON.stringify(results));
  76. });
  77. }
  78. }