mysql-raw.js 2.4 KB

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