create-server.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. var Hapi = require('hapi');
  2. var server = new Hapi.Server();
  3. server.connection({port: 8080});
  4. server.views({
  5. engines: {
  6. hbs: require('handlebars')
  7. },
  8. path: __dirname + '/views',
  9. compileOptions: {
  10. pretty: false
  11. }
  12. });
  13. var Promise = require('bluebird');
  14. var MongooseHandler;
  15. var SequelizeHandler;
  16. var SequelizePgHandler;
  17. var RedisHandler;
  18. // Slight start-up improvement loading handlers in parallel
  19. Promise.join(
  20. require('./handlers/mongoose'),
  21. require('./handlers/sequelize'),
  22. require('./handlers/sequelize-postgres'),
  23. require('./handlers/redis'),
  24. function (mongo, mysql, pg, redis) {
  25. MongooseHandler = mongo;
  26. SequelizeHandler = mysql;
  27. SequelizePgHandler = pg;
  28. RedisHandler = redis;
  29. })
  30. .catch(function (err) {
  31. console.log('There was a problem setting up the handlers');
  32. process.exit(1);
  33. });
  34. Route('/json', JsonSerialization);
  35. Route('/plaintext', Plaintext);
  36. Route('/mongoose/db', MongooseHandler.SingleQuery);
  37. Route('/mongoose/queries', MongooseHandler.MultipleQueries);
  38. Route('/mongoose/fortunes', MongooseHandler.Fortunes);
  39. Route('/mongoose/updates', MongooseHandler.Updates);
  40. Route('/sequelize/db', SequelizeHandler.SingleQuery);
  41. Route('/sequelize/queries', SequelizeHandler.MultipleQueries);
  42. Route('/sequelize/fortunes', SequelizeHandler.Fortunes);
  43. Route('/sequelize/updates', SequelizeHandler.Updates);
  44. Route('/sequelize-pg/db', SequelizePgHandler.SingleQuery);
  45. Route('/sequelize-pg/queries', SequelizePgHandler.MultipleQueries);
  46. Route('/sequelize-pg/fortunes', SequelizePgHandler.Fortunes);
  47. Route('/sequelize-pg/updates', SequelizePgHandler.Updates);
  48. Route('/hiredis/db', RedisHandler.SingleQuery);
  49. Route('/hiredis/queries', RedisHandler.MultipleQueries);
  50. Route('/hiredis/fortunes', RedisHandler.Fortunes);
  51. Route('/hiredis/updates', RedisHandler.Updates);
  52. function JsonSerialization(req, reply) {
  53. reply({ message: 'Hello, World!' })
  54. .header('Server', 'hapi');
  55. }
  56. function Plaintext(req, reply) {
  57. reply('Hello, World!')
  58. .header('Server', 'hapi')
  59. .header('Content-Type', 'text/plain');
  60. }
  61. // Makes routing simpler as tfb routes are all GET's
  62. // We also don't use the nifty route features that Hapi has
  63. // to offer such as attaching a validator
  64. function Route(path, handler) {
  65. server.route({ method: 'GET', path: path, handler: handler})
  66. }
  67. server.start(function (err) {
  68. console.log('Hapi worker started and listening on ' + server.info.uri + " "
  69. + new Date().toISOString(" "));
  70. });