From 7fb41bb2691d4c70ca7eda41e6e4f15f7e963a35 Mon Sep 17 00:00:00 2001 From: Leung Cheng Date: Fri, 7 Jun 2024 15:36:08 +0800 Subject: [PATCH 1/3] Remove instance variable of ExpressAppInitializer --- backend/src/app.ts | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/backend/src/app.ts b/backend/src/app.ts index 56a2c74..f67bff7 100644 --- a/backend/src/app.ts +++ b/backend/src/app.ts @@ -10,34 +10,33 @@ import morgan from 'morgan' import { ApplicationContext } from './context' export class ExpressAppInitializer { - private readonly app: Express - static async createApp(applicationContext: ApplicationContext) { const dutiesRouter = await DutiesRouterInitializer.createRouter(applicationContext) - const initializer = new ExpressAppInitializer({ - dutiesRouter: dutiesRouter, + return ExpressAppInitializer.internalCreateApp({ + dutiesRouter, }) - return initializer.app } static createNullApp() { - const initializer = new ExpressAppInitializer({ + return ExpressAppInitializer.internalCreateApp({ dutiesRouter: DutiesRouterInitializer.createNullRouter(), }) - return initializer.app } - private constructor({ dutiesRouter }: { dutiesRouter: Router }) { - this.app = express() - this.setPreRoutingMiddlewares() - this.app.use('/duties', dutiesRouter) + private static internalCreateApp({ dutiesRouter }: { dutiesRouter: Router }) { + const app = express() + this.setPreRoutingMiddlewares(app) + + app.use('/duties', dutiesRouter) + + return app } - private setPreRoutingMiddlewares() { - this.app.use(morgan('tiny')) - this.app.use(allowCors) - this.app.use(express.json()) + private static setPreRoutingMiddlewares(app: Express) { + app.use(morgan('tiny')) + app.use(allowCors) + app.use(express.json()) } } From ccba32f1a3d6150ae1b220e9ec99f522cdb60f14 Mon Sep 17 00:00:00 2001 From: Leung Cheng Date: Fri, 7 Jun 2024 16:03:57 +0800 Subject: [PATCH 2/3] Remove instance variable router --- backend/src/route/duties.ts | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/backend/src/route/duties.ts b/backend/src/route/duties.ts index 04cec0c..be4fd81 100644 --- a/backend/src/route/duties.ts +++ b/backend/src/route/duties.ts @@ -8,30 +8,29 @@ import { Duty } from '../models/duty' import { ApplicationContext } from '../context' import { RouteErrorHandler } from './util' import { createRouter } from './route' -import { Router } from 'express' export class DutiesRouterInitializer { - private router: Router - - private dutyRepository: DutyRepository - static async createRouter(applicationContext: ApplicationContext) { const dutyRepository = await PostgresDutyRepository.create( applicationContext.postgresContext, ) - return new DutiesRouterInitializer({ dutyRepository }).router + return new DutiesRouterInitializer({ dutyRepository }).createRouter() } static createNullRouter() { return new DutiesRouterInitializer({ dutyRepository: new InMemoryDutyRepository(), - }).router + }).createRouter() } + private dutyRepository: DutyRepository + private constructor({ dutyRepository }: { dutyRepository: DutyRepository }) { this.dutyRepository = dutyRepository + } - const router = createRouter([ + private createRouter() { + return createRouter([ { path: '/', method: 'post', @@ -58,8 +57,6 @@ export class DutiesRouterInitializer { handler: this.deleteDuty, }, ]) - - this.router = router } private createDuty = async (req: Request, res: Response) => { From f86cd0773a245cc293d51ce2eb85df4715bf08b3 Mon Sep 17 00:00:00 2001 From: Leung Cheng Date: Fri, 7 Jun 2024 16:06:45 +0800 Subject: [PATCH 3/3] Rename initializer to factory --- backend/src/app.test.ts | 4 ++-- backend/src/app.ts | 12 ++++++------ backend/src/index.ts | 4 ++-- backend/src/route/duties.ts | 6 +++--- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/backend/src/app.test.ts b/backend/src/app.test.ts index 0fd0c15..fe6dbac 100644 --- a/backend/src/app.test.ts +++ b/backend/src/app.test.ts @@ -1,6 +1,6 @@ import { describe, it, expect, beforeEach } from '@jest/globals' import request from 'supertest' -import { ExpressAppInitializer } from './app' +import { ExpressAppFactory } from './app' import { Express } from 'express' import { assertErrorResponse } from './test_utils/assert' @@ -13,7 +13,7 @@ describe('API', () => { let app: Express beforeEach(() => { - app = ExpressAppInitializer.createNullApp() + app = ExpressAppFactory.createNullApp() }) it('should return back duty tend to create', async () => { diff --git a/backend/src/app.ts b/backend/src/app.ts index f67bff7..a6f5197 100644 --- a/backend/src/app.ts +++ b/backend/src/app.ts @@ -5,22 +5,22 @@ import express, { Response, Router, } from 'express' -import { DutiesRouterInitializer } from './route/duties' +import { DutiesRouterFactory } from './route/duties' import morgan from 'morgan' import { ApplicationContext } from './context' -export class ExpressAppInitializer { +export class ExpressAppFactory { static async createApp(applicationContext: ApplicationContext) { const dutiesRouter = - await DutiesRouterInitializer.createRouter(applicationContext) - return ExpressAppInitializer.internalCreateApp({ + await DutiesRouterFactory.createRouter(applicationContext) + return ExpressAppFactory.internalCreateApp({ dutiesRouter, }) } static createNullApp() { - return ExpressAppInitializer.internalCreateApp({ - dutiesRouter: DutiesRouterInitializer.createNullRouter(), + return ExpressAppFactory.internalCreateApp({ + dutiesRouter: DutiesRouterFactory.createNullRouter(), }) } diff --git a/backend/src/index.ts b/backend/src/index.ts index 82cf71d..316e846 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -1,10 +1,10 @@ import { env } from 'process' -import { ExpressAppInitializer } from './app' +import { ExpressAppFactory } from './app' import { newApplicationContextFromEnv } from './context' const port = env.PORT || 8080 -ExpressAppInitializer.createApp(newApplicationContextFromEnv()) +ExpressAppFactory.createApp(newApplicationContextFromEnv()) .then((app) => { app.listen(port, () => { console.log(`Server running on port ${port}`) diff --git a/backend/src/route/duties.ts b/backend/src/route/duties.ts index be4fd81..ca663ef 100644 --- a/backend/src/route/duties.ts +++ b/backend/src/route/duties.ts @@ -9,16 +9,16 @@ import { ApplicationContext } from '../context' import { RouteErrorHandler } from './util' import { createRouter } from './route' -export class DutiesRouterInitializer { +export class DutiesRouterFactory { static async createRouter(applicationContext: ApplicationContext) { const dutyRepository = await PostgresDutyRepository.create( applicationContext.postgresContext, ) - return new DutiesRouterInitializer({ dutyRepository }).createRouter() + return new DutiesRouterFactory({ dutyRepository }).createRouter() } static createNullRouter() { - return new DutiesRouterInitializer({ + return new DutiesRouterFactory({ dutyRepository: new InMemoryDutyRepository(), }).createRouter() }