Skip to content

Commit 345124e

Browse files
committed
Use express-promise-route as router for all apps
1 parent 27c69d9 commit 345124e

File tree

7 files changed

+69
-36
lines changed

7 files changed

+69
-36
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
export default interface Logger {
22
debug(message: string): void;
3-
error(message: string): void;
3+
error(message: string | Error): void;
44
info(message: string): void;
55
}

src/Contexts/Shared/infrastructure/WinstonLogger.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1+
import winston, { Logger as WinstonLoggerType } from 'winston';
12
import Logger from '../domain/Logger';
2-
import winston, { format, Logger as WinstonLoggerType } from 'winston';
33

44
enum Levels {
55
DEBUG = 'debug',
@@ -12,7 +12,13 @@ class WinstonLogger implements Logger {
1212

1313
constructor() {
1414
this.logger = winston.createLogger({
15-
format: format.combine(format.splat(), format.simple()),
15+
format: winston.format.combine(
16+
winston.format.prettyPrint(),
17+
winston.format.errors({ stack: true }),
18+
winston.format.splat(),
19+
winston.format.colorize(),
20+
winston.format.simple()
21+
),
1622
transports: [
1723
new winston.transports.Console(),
1824
new winston.transports.File({ filename: `logs/${Levels.DEBUG}.log`, level: Levels.DEBUG }),
@@ -26,13 +32,12 @@ class WinstonLogger implements Logger {
2632
this.logger.debug(message);
2733
}
2834

29-
error(message: string) {
35+
error(message: string | Error) {
3036
this.logger.error(message);
3137
}
3238

3339
info(message: string) {
3440
this.logger.info(message);
3541
}
3642
}
37-
3843
export default WinstonLogger;
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
import { Express } from 'express';
1+
import { Router } from 'express';
22
import glob from 'glob';
33

4-
export function registerRoutes(app: Express) {
4+
export function registerRoutes(router: Router) {
55
const routes = glob.sync(__dirname + '/**/*.route.*');
6-
routes.map(route => register(route, app));
6+
routes.map(route => register(route, router));
77
}
88

9-
function register(routePath: string, app: Express) {
9+
function register(routePath: string, app: Router) {
1010
const route = require(routePath);
1111
route.register(app);
1212
}

src/apps/backoffice/backend/server.ts

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
1+
import bodyParser from 'body-parser';
2+
import compress from 'compression';
13
import errorHandler from 'errorhandler';
4+
import express, { Request, Response } from 'express';
5+
import Router from 'express-promise-router';
26
import helmet from 'helmet';
3-
import compress from 'compression';
4-
import bodyParser from 'body-parser';
5-
import express from 'express';
67
import * as http from 'http';
8+
import httpStatus from 'http-status';
79
import Logger from '../../../Contexts/Shared/domain/Logger';
8-
import { registerRoutes } from './routes';
910
import container from './dependency-injection';
11+
import { registerRoutes } from './routes';
1012

1113
export class Server {
1214
private express: express.Express;
@@ -25,8 +27,15 @@ export class Server {
2527
this.express.use(helmet.hidePoweredBy());
2628
this.express.use(helmet.frameguard({ action: 'deny' }));
2729
this.express.use(compress());
28-
registerRoutes(this.express);
29-
this.express.use(errorHandler());
30+
const router = Router();
31+
router.use(errorHandler());
32+
this.express.use(router);
33+
registerRoutes(router);
34+
35+
router.use((err: Error, req: Request, res: Response, next: Function) => {
36+
this.logger.error(err);
37+
res.status(httpStatus.INTERNAL_SERVER_ERROR).send(err.message);
38+
});
3039
}
3140

3241
async listen(): Promise<void> {
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
import { Express } from 'express';
1+
import { Router } from 'express';
22
import glob from 'glob';
33

4-
export function registerRoutes(app: Express) {
4+
export function registerRoutes(router: Router) {
55
const routes = glob.sync(__dirname + '/**/*.route.*');
6-
routes.map(route => register(route, app));
6+
routes.map(route => register(route, router));
77
}
88

9-
function register(routePath: string, app: Express) {
9+
function register(routePath: string, router: Router) {
1010
const route = require(routePath);
11-
route.register(app);
11+
route.register(router);
1212
}

src/apps/backoffice/frontend/server.ts

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
1-
import helmet from 'helmet';
2-
import compress from 'compression';
31
import bodyParser from 'body-parser';
4-
import cookieParser from 'cookie-parser';
2+
import compress from 'compression';
53
import flash from 'connect-flash';
6-
import express from 'express';
7-
import * as http from 'http';
8-
import Logger from '../../../Contexts/Shared/domain/Logger';
9-
import { registerRoutes } from './routes';
4+
import cookieParser from 'cookie-parser';
105
import cookieSession from 'cookie-session';
6+
import errorHandler from 'errorhandler';
7+
import express, { Request, Response } from 'express';
8+
import Router from 'express-promise-router';
9+
import helmet from 'helmet';
10+
import * as http from 'http';
11+
import httpStatus from 'http-status';
1112
import nunjucks from 'nunjucks';
1213
import path from 'path';
13-
import errorHandler from 'errorhandler';
14+
import Logger from '../../../Contexts/Shared/domain/Logger';
1415
import container from './dependency-injection';
16+
import { registerRoutes } from './routes';
1517

1618
export class Server {
1719
private express: express.Express;
@@ -47,8 +49,15 @@ export class Server {
4749
this.express.use(helmet.hidePoweredBy());
4850
this.express.use(helmet.frameguard({ action: 'deny' }));
4951
this.express.use(compress());
50-
registerRoutes(this.express);
51-
this.express.use(errorHandler());
52+
const router = Router();
53+
router.use(errorHandler());
54+
this.express.use(router);
55+
registerRoutes(router);
56+
57+
router.use((err: Error, req: Request, res: Response, next: Function) => {
58+
this.logger.error(err);
59+
res.status(httpStatus.INTERNAL_SERVER_ERROR).send(err.message);
60+
});
5261
}
5362

5463
async listen(): Promise<void> {

src/apps/mooc/backend/server.ts

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
1+
import bodyParser from 'body-parser';
2+
import compress from 'compression';
13
import errorHandler from 'errorhandler';
4+
import express, { Request, Response } from 'express';
5+
import Router from 'express-promise-router';
26
import helmet from 'helmet';
3-
import compress from 'compression';
4-
import bodyParser from 'body-parser';
5-
import express from 'express';
67
import * as http from 'http';
8+
import httpStatus from 'http-status';
79
import Logger from '../../../Contexts/Shared/domain/Logger';
8-
import { registerRoutes } from './routes';
910
import container from './dependency-injection';
11+
import { registerRoutes } from './routes';
1012

1113
export class Server {
1214
private express: express.Express;
@@ -25,8 +27,16 @@ export class Server {
2527
this.express.use(helmet.hidePoweredBy());
2628
this.express.use(helmet.frameguard({ action: 'deny' }));
2729
this.express.use(compress());
28-
registerRoutes(this.express);
29-
this.express.use(errorHandler());
30+
const router = Router();
31+
router.use(errorHandler());
32+
this.express.use(router);
33+
34+
registerRoutes(router);
35+
36+
router.use((err: Error, req: Request, res: Response, next: Function) => {
37+
this.logger.error(err);
38+
res.status(httpStatus.INTERNAL_SERVER_ERROR).send(err.message);
39+
});
3040
}
3141

3242
async listen(): Promise<void> {

0 commit comments

Comments
 (0)