index.js 930 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. 'use strict';
  2. const express = require('express');
  3. const logger = require('../logger');
  4. const { port } = require('../config');
  5. const app = express();
  6. require('./middleware')(app);
  7. app.use('/', require('./routes'));
  8. // eslint-disable-next-line no-unused-vars
  9. app.use((err, req, res, next) => res.sendStatus(err.status || 500));
  10. let server;
  11. function start() {
  12. return new Promise((resolve, reject) => {
  13. if (server) {
  14. reject('Server has already been started');
  15. return;
  16. }
  17. try {
  18. server = app.listen(port, () => {
  19. logger.info(`Server running on port ${port}...`);
  20. resolve(app);
  21. });
  22. } catch (e) {
  23. reject(e);
  24. }
  25. });
  26. }
  27. function stop() {
  28. return new Promise((resolve, reject) => {
  29. if (!server) {
  30. reject('Server was not started');
  31. return;
  32. }
  33. server.close();
  34. server = undefined;
  35. resolve();
  36. });
  37. }
  38. module.exports = {
  39. start,
  40. stop,
  41. };