DatabaseQueryController.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. /**
  2. * DatabaseQueryController
  3. *
  4. * @description :: Server-side logic for managing Database Queries
  5. */
  6. var Sequelize = require('sequelize')
  7. var sequelize = new Sequelize(
  8. 'hello_world', 'benchmarkdbuser', 'benchmarkdbpass',
  9. {
  10. host: '127.0.0.1',
  11. dialect: 'mysql',
  12. pool: {
  13. max: 5000,
  14. min: 0,
  15. idle: 5000
  16. },
  17. logging: true
  18. });
  19. var World = sequelize.define('World', {
  20. id: Sequelize.INTEGER,
  21. randomNumber: Sequelize.INTEGER
  22. },
  23. {
  24. // prevents sequelize from assuming the table is called 'Worlds'
  25. freezeTableName: true,
  26. timestamps: false,
  27. })
  28. var randomTFBnumber = function() {
  29. return Math.floor(Math.random() * 10000) + 1;
  30. }
  31. var worldQuery = function(callback) {
  32. World.findOne({
  33. where: { id: randomTFBnumber() }
  34. }).complete(callback);
  35. }
  36. var worldUpdate = function(callback) {
  37. World.update({
  38. randomNumber: randomTFBnumber()
  39. },
  40. {
  41. where: {
  42. id: randomTFBnumber()
  43. }
  44. }
  45. ).complete(callback);
  46. }
  47. module.exports = {
  48. /**
  49. * Test 2: Single Database Query
  50. */
  51. single: function (req, res) {
  52. World.findOne({
  53. where: { id: randomTFBnumber() }
  54. }).then(function(results) {
  55. return res.json(results.get());
  56. })
  57. },
  58. /**
  59. * Test 3: Multiple Database Query
  60. */
  61. multiple: function (req, res) {
  62. var queries = req.param('queries');
  63. var worlds = [];
  64. queries = Math.min(Math.max(queries, 1), 500) || 1;
  65. for (var i = 0; i < queries; i++) {
  66. worlds.push(worldQuery)
  67. }
  68. async.parallel(worlds, function(err, results) {
  69. res.json(results);
  70. });
  71. },
  72. updates: function(req, res) {
  73. var queries = req.param('queries');
  74. var worlds = [];
  75. queries = Math.min(Math.max(queries, 1), 500) || 1;
  76. for (var i = 0; i < queries; i++) {
  77. worlds.push(worldQuery);
  78. }
  79. async.parallel(worlds, function(err, results) {
  80. res.json(results);
  81. });
  82. }
  83. };