create-server.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. const Koa = require('koa');
  2. const Router = require('koa-router');
  3. const hbs = require('koa-hbs');
  4. const bodyParser = require('koa-bodyparser');
  5. const handlebars = require('handlebars');
  6. const handler = require('./handlers/handler');
  7. const app = new Koa();
  8. const router = new Router();
  9. app
  10. .use(async (ctx, next) => {
  11. ctx.set('Server', 'Koa');
  12. await next();
  13. });
  14. router
  15. .get('/json', (ctx) => {
  16. ctx.body = {message: 'Hello, World!'};
  17. })
  18. .get('/plaintext', (ctx) => {
  19. ctx.body = 'Hello, World!';
  20. });
  21. const handlerName = process.env.NODE_HANDLER;
  22. if (handlerName) {
  23. const dbLayer = require(`./handlers/${handlerName}`);
  24. const routerHandler = handler(dbLayer);
  25. router
  26. .use(bodyParser())
  27. .use(hbs.middleware({
  28. handlebars: handlebars,
  29. viewPath: __dirname + '/views'
  30. }))
  31. .get('/db', routerHandler.SingleQuery)
  32. .get('/queries', routerHandler.MultipleQueries)
  33. .get('/fortunes', routerHandler.Fortunes)
  34. .get('/updates', routerHandler.Updates);
  35. }
  36. app.use(router.routes());
  37. app.listen(8080);
  38. console.log(`Worker started and listening on http://0.0.0.0:8080 ${new Date().toISOString()}`);