create-server.js 2.5 KB

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