1e9c0899cb07501c595774b48d55ff9c0806ddeb
[squeep-indie-auther] / server.js
1 'use strict';
2
3 const http = require('http');
4
5 const Config = require('./config');
6 const DB = require('./src/db');
7 const Service = require('./src/service');
8 const Logger = require('./src/logger');
9 const { fileScope } = require('./src/common');
10 const _fileScope = fileScope(__filename);
11 const { version } = require('./package.json');
12
13 const PORT = process.env.PORT || 3002;
14 const ADDR = process.env.LISTEN_ADDR || '127.0.0.1';
15
16 (async function main () {
17 const _scope = _fileScope('main');
18 let config, logger, db, service;
19 try {
20 config = new Config(process.env.NODE_ENV);
21 logger = new Logger(config);
22 db = new DB(logger, config);
23 await db.initialize();
24 service = new Service(logger, db, config);
25 await service.initialize();
26
27 http.createServer((req, res) => {
28 service.dispatch(req, res);
29 }).listen(PORT, ADDR, (err) => {
30 if (err) {
31 logger.error(_scope, 'error starting server', err);
32 throw err;
33 }
34 logger.info(_scope, 'server started', { version, listenAddress: ADDR, listenPort: PORT });
35 });
36 } catch (e) {
37 (logger || console).error(_scope, 'error starting server', e);
38 }
39 })();