Skip to content

Commit 71929e4

Browse files
author
hersveit
authored
Merge pull request #33 from fullstack-development/refactor-core
Refactor core
2 parents 905d40f + 6ca88e2 commit 71929e4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+7428
-648
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,6 @@ node_modules/
44
yarn-error.log
55
.env
66
.e2e.env
7+
8+
*/**/node_modules_docker_dev
9+
*/**/.ignore

api/.dockerignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@ Dockerfile
55
node_modules
66
dist
77
env
8-
coverage
8+
coverage
9+
.prisma-lib

api/Dockerfile.dev

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
FROM public.ecr.aws/docker/library/node:18.15
2+
3+
WORKDIR /app
4+
5+
ENV PATH=/app/api/node_modules/.bin:$PATH
6+
7+
EXPOSE 3000
8+
9+
CMD ["sh", "-c", "yarn --cwd libs/repository && yarn --cwd libs/repository prisma:generate && yarn --cwd libs/core && yarn --cwd api && yarn cache clean && yarn --cwd api start:dev"]

api/package.json

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,21 @@
1818
"test:coverage": "cross-env TEST=true jest --coverage"
1919
},
2020
"dependencies": {
21-
"@medibloc/nestjs-request-context": "^1.0.0",
2221
"@nestjs/common": "^9.2.1",
2322
"@nestjs/core": "^9.2.1",
2423
"@nestjs/jwt": "^10.0.1",
2524
"@nestjs/passport": "^9.0.0",
2625
"@nestjs/platform-express": "^9.2.1",
2726
"@nestjs/schedule": "^2.1.0",
27+
"@nestjs/swagger": "^6.1.4",
2828
"body-parser": "^1.19.0",
2929
"class-transformer": "^0.3.1",
3030
"class-validator": "^0.12.2",
3131
"cookie-parser": "^1.4.6",
3232
"cross-env": "^7.0.3",
3333
"date-fns": "^2.29.3",
3434
"dotenv": "^8.2.0",
35+
"ethers": "^5.7.1",
3536
"express": "^4.17.2",
3637
"node-fetch": "^2.6.7",
3738
"passport": "^0.4.1",
@@ -40,10 +41,8 @@
4041
"reflect-metadata": "^0.1.13",
4142
"rimraf": "^3.0.2",
4243
"rxjs": "^7.2.0",
43-
"swagger-ui-express": "^4.5.0",
4444
"ts-morph": "^17.0.1",
45-
"uuid": "^8.3.2",
46-
"yamljs": "^0.3.0"
45+
"uuid": "^8.3.2"
4746
},
4847
"devDependencies": {
4948
"@golevelup/ts-jest": "^0.3.2",
@@ -88,13 +87,16 @@
8887
"<rootDir>/node_modules",
8988
"<rootDir>/src",
9089
"<rootDir>/../libs/repository",
91-
"<rootDir>/../libs/repository/node_modules"
90+
"<rootDir>/../libs/repository/node_modules",
91+
"<rootDir>/../libs/core",
92+
"<rootDir>/../libs/core/node_modules"
9293
],
9394
"modulePathIgnorePatterns": [
9495
"<rootDir>/dist/",
9596
"<rootDir>/eslint-plugin/",
9697
"<rootDir>/migrations/",
97-
"<rootDir>/coverage/"
98+
"<rootDir>/coverage/",
99+
"<rootDir>/node_modules_docker_dev"
98100
],
99101
"testRegex": ".*\\.spec\\.ts$",
100102
"transform": {
@@ -109,7 +111,10 @@
109111
"./jest-setup-file.ts"
110112
],
111113
"moduleNameMapper": {
112-
"@lib/repository": "<rootDir>/../libs/repository"
114+
"@lib/repository": "<rootDir>/../libs/repository",
115+
"@lib/core": "<rootDir>/../libs/core/src/index.ts",
116+
"@lib/utils": "<rootDir>/../libs/core/utils/index.ts",
117+
"@lib/testing": "<rootDir>/../libs/core/testing/index.ts"
113118
}
114119
}
115120
}

api/src/__mocks__/DatabaseServiceProviderFake.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* eslint-disable @typescript-eslint/no-explicit-any */
22

33
import { createMock, DeepMocked } from '@golevelup/ts-jest';
4-
import { DatabaseProvider } from '../core/database/database.core';
4+
import { DatabaseProvider } from '@lib/repository';
55

66
export type DeepMockedDatabaseServiceProvider = ReturnType<typeof getMockedDatabase>;
77

api/src/__mocks__/TransactionsContextFake.ts

Lines changed: 0 additions & 16 deletions
This file was deleted.

api/src/app/app.module.ts

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,14 @@
1-
import { RepositoryLibrary } from '@lib/repository';
2-
import { RequestContextModule } from '@medibloc/nestjs-request-context';
1+
import { HttpInterceptor } from '@lib/core';
2+
import { DatabaseModule } from '@lib/repository';
33
import { Module, Scope } from '@nestjs/common';
44
import { APP_INTERCEPTOR } from '@nestjs/core';
5-
import { AuthController } from '../controllers/auth/auth.controller';
6-
import { UserController } from '../controllers/user/user.controller';
5+
import { AppController } from '../controllers/rest/app.controller';
6+
import { AuthController } from '../controllers/rest/auth/auth.controller';
7+
import { UserController } from '../controllers/rest/user/user.controller';
78
import { Config } from '../core/config/config.core';
8-
import { Database } from '../core/database/database.core';
9-
import { HttpInterceptor } from '../core/interceptor.core';
10-
import { TransactionsContext } from '../core/transactions.core';
11-
import { AppController } from './../controllers/app.controller';
129

1310
@Module({
14-
imports: [
15-
Config,
16-
RepositoryLibrary,
17-
Database,
18-
RequestContextModule.forRoot({
19-
contextClass: TransactionsContext,
20-
isGlobal: true,
21-
}),
22-
AuthController,
23-
UserController,
24-
AppController,
25-
],
11+
imports: [Config, DatabaseModule.forRoot(), AuthController, UserController, AppController],
2612
providers: [
2713
{
2814
provide: APP_INTERCEPTOR,

api/src/controllers/prefix.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export const PREFIX_URI = 'api';

api/src/controllers/app.controller.ts renamed to api/src/controllers/rest/app.controller.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1+
import { ControllerResponse } from '@lib/core';
12
import { Body, Controller, Get, Module, Query } from '@nestjs/common';
2-
import { ControllerResponse } from './../core/controller.core';
3+
import { PREFIX_URI } from '../prefix';
34

4-
@Controller('api')
5+
@Controller(PREFIX_URI)
56
export class AppControllerProvider {
67
@Get('echo')
78
async echo(

api/src/controllers/auth/__tests__/auth.controller.spec.ts renamed to api/src/controllers/rest/auth/__tests__/auth.controller.spec.ts

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,22 @@
11
import { createMock, DeepMocked } from '@golevelup/ts-jest';
2-
import { RequestContextModule } from '@medibloc/nestjs-request-context';
2+
import { HttpInterceptor } from '@lib/core';
3+
import { AsyncContext, DatabaseProvider, Transactions } from '@lib/repository';
4+
import { AppWrap } from '@lib/testing';
35
import { ModuleRef } from '@nestjs/core';
46
import { JwtModule } from '@nestjs/jwt';
57
import { Test } from '@nestjs/testing';
68
import * as cookieParser from 'cookie-parser';
79
import * as request from 'supertest';
810
import { v4 } from 'uuid';
9-
import { ConfigProvider } from '../../../core/config/config.core';
10-
import { DatabaseProvider } from '../../../core/database/database.core';
11-
import { HttpInterceptor } from '../../../core/interceptor.core';
12-
import { AuthServiceProvider } from '../../../services/auth/auth.service';
13-
import { JwtRefreshTokenStrategy } from '../../../services/auth/strategies/jwt-refresh.strategy';
14-
import { JwtStrategy } from '../../../services/auth/strategies/jwt.strategy';
15-
import { MailServiceProvider } from '../../../services/mail/mail.service';
16-
import { TokenServiceProvider } from '../../../services/token/token.service';
17-
import { UserServiceProvider } from '../../../services/user/user.service';
18-
import { AppWrap } from '../../../utils/tests.utils';
19-
import { ConfigServiceFake } from '../../../__mocks__/ConfigServiceFake';
20-
import { TransactionsContextFake } from '../../../__mocks__/TransactionsContextFake';
21-
import { getUserStub } from '../../../__mocks__/user.stub';
11+
import { ConfigProvider } from '../../../../core/config/config.core';
12+
import { AuthServiceProvider } from '../../../../services/auth/auth.service';
13+
import { JwtRefreshTokenStrategy } from '../../../../services/auth/strategies/jwt-refresh.strategy';
14+
import { JwtStrategy } from '../../../../services/auth/strategies/jwt.strategy';
15+
import { MailServiceProvider } from '../../../../services/mail/mail.service';
16+
import { TokenServiceProvider } from '../../../../services/token/token.service';
17+
import { UserServiceProvider } from '../../../../services/user/user.service';
18+
import { ConfigServiceFake } from '../../../../__mocks__/ConfigServiceFake';
19+
import { getUserStub } from '../../../../__mocks__/user.stub';
2220
import { AuthControllerProvider } from '../auth.controller';
2321

2422
describe('AuthController', () => {
@@ -37,10 +35,6 @@ describe('AuthController', () => {
3735
secret: configService.JWT_SECRET,
3836
signOptions: { expiresIn: configService.JWT_EXPIRES_IN },
3937
}),
40-
RequestContextModule.forRoot({
41-
contextClass: TransactionsContextFake,
42-
isGlobal: true,
43-
}),
4438
],
4539
providers: [
4640
{
@@ -81,7 +75,11 @@ describe('AuthController', () => {
8175

8276
appWrap.app = module.createNestApplication();
8377
appWrap.app.useGlobalInterceptors(
84-
new HttpInterceptor(createMock<ModuleRef>(), db as unknown as DatabaseProvider),
78+
new HttpInterceptor(
79+
createMock<ModuleRef>(),
80+
createMock<AsyncContext<string, Transactions>>(),
81+
db as unknown as DatabaseProvider,
82+
),
8583
);
8684
appWrap.app.use(cookieParser());
8785
await appWrap.app.init();

0 commit comments

Comments
 (0)