mysql-raw.js 2.4 KB

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