sequelize.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. var h = require('../helper');
  2. var async = require('async');
  3. var Sequelize = require('sequelize');
  4. var sequelize = new Sequelize('hello_world', 'benchmarkdbuser', 'benchmarkdbpass', {
  5. host: '127.0.0.1',
  6. dialect: 'mysql',
  7. logging: false
  8. });
  9. var Worlds = sequelize.define('World', {
  10. id: { type: 'Sequelize.INTEGER' },
  11. randomNumber: { type: 'Sequelize.INTEGER' }
  12. }, {
  13. timestamps: false,
  14. freezeTableName: true
  15. });
  16. var Fortunes = sequelize.define('Fortune', {
  17. id: { type: 'Sequelize.INTEGER' },
  18. message: { type: 'Sequelize.STRING' }
  19. }, {
  20. timestamps: false,
  21. freezeTableName: true
  22. });
  23. // Sequelize Query Functions
  24. function sequelizeRandomWorld(callback) {
  25. Worlds.findOne({
  26. where: { id: h.randomTfbNumber() }
  27. }).complete(callback);
  28. }
  29. module.exports = {
  30. SingleQuery: function (req, res) {
  31. sequelizeRandomWorld(function (err, result) {
  32. if (err) { return process.exit(1); }
  33. h.addTfbHeaders(res, 'json');
  34. res.end(JSON.stringify(result));
  35. });
  36. },
  37. MultipleQueries: function (queries, req, res) {
  38. var queryFunctions = h.fillArray(sequelizeRandomWorld, queries);
  39. async.parallel(queryFunctions, function (err, results) {
  40. if (err) { return process.exit(1); }
  41. h.addTfbHeaders(res, 'json');
  42. res.end(JSON.stringify(results));
  43. });
  44. },
  45. Fortunes: function (req, res) {
  46. Fortunes.findAll().complete(function (err, fortunes) {
  47. if (err) { return process.exit(1); }
  48. fortunes.push(h.ADDITIONAL_FORTUNE);
  49. fortunes.sort(function (a, b) {
  50. return a.message.localeCompare(b.message);
  51. });
  52. h.addTfbHeaders(res, 'html');
  53. res.end(h.fortunesTemplate({
  54. fortunes: fortunes
  55. }));
  56. });
  57. },
  58. Updates: function (queries, req, res) {
  59. var selectFunctions = h.fillArray(sequelizeRandomWorld, queries);
  60. async.parallel(selectFunctions, function (err, worlds) {
  61. if (err) { return process.exit(1); }
  62. var updateFunctions = [];
  63. for (var i = 0; i < queries; i++) {
  64. (function (i) {
  65. updateFunctions.push(function (callback) {
  66. worlds[i].randomNumber = h.randomTfbNumber();
  67. worlds[i].save().complete(callback);
  68. });
  69. })(i);
  70. }
  71. async.parallel(updateFunctions, function (err, updates) {
  72. if (err) { return process.exit(1); }
  73. h.addTfbHeaders(res, 'json');
  74. res.end(JSON.stringify(updates));
  75. });
  76. });
  77. }
  78. }