Skip to content

Commit 3bebfbc

Browse files
authored
Merge pull request #10 from SoftwareBrothers/feat/custom-loader
Custom loader & fix for #7
2 parents e73598c + 8cc5725 commit 3bebfbc

14 files changed

+2082
-1899
lines changed

example-app/package.json

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,18 @@
1515
"test:watch": "jest --watch",
1616
"test:cov": "jest --coverage",
1717
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
18-
"test:e2e": "jest --config ./test/jest-e2e.json"
18+
"test:e2e": "NODE_ENV=test jest --config ./test/jest-e2e.json"
1919
},
2020
"dependencies": {
21-
"@admin-bro/express": "^3.0.0-beta.3",
22-
"@admin-bro/mongoose": "^1.0.0-beta.3",
23-
"@admin-bro/nestjs": "^1.0.0-beta.2",
24-
"@nestjs/common": "^6.7.2",
25-
"@nestjs/core": "^6.7.2",
21+
"@admin-bro/express": "^3.0.1",
22+
"@admin-bro/mongoose": "^1.1.0",
23+
"@nestjs/common": "^7.4.2",
24+
"@nestjs/core": "7.4.2",
2625
"@nestjs/mongoose": "^7.0.2",
2726
"@nestjs/platform-express": "^6.7.2",
28-
"admin-bro": "^3.0.0-beta.12",
27+
"admin-bro": "^3.3.1",
28+
"class-transformer": "^0.3.1",
29+
"class-validator": "^0.12.2",
2930
"express": "^4.17.1",
3031
"express-formidable": "^1.2.0",
3132
"express-session": "^1.17.1",

example-app/src/app.controller.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
1-
import { Controller, Get } from '@nestjs/common';
2-
import mongoose from 'mongoose';
1+
import { Body, Controller, Get, Post } from '@nestjs/common';
2+
import { IsString } from 'class-validator';
3+
import { Expose } from 'class-transformer';
34

45
import { AppService } from './app.service';
56

7+
export class Hello {
8+
@Expose()
9+
@IsString()
10+
public hello!: string
11+
}
12+
613
@Controller()
714
export class AppController {
815
constructor(private readonly appService: AppService) {}
@@ -11,4 +18,9 @@ export class AppController {
1118
public getHello(): string {
1219
return this.appService.getHello();
1320
}
21+
22+
@Post()
23+
public postHello(@Body() testBody: Hello): string {
24+
return testBody.hello;
25+
}
1426
}

example-app/src/app.module.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
11
import { Module } from '@nestjs/common';
22
import { MongooseModule, getModelToken } from '@nestjs/mongoose';
3+
import AdminBro from 'admin-bro';
4+
import AdminBroMongoose from '@admin-bro/mongoose';
35
import { Model } from 'mongoose';
46

57
import { AdminModule } from '../../src'; // lib
68

79
import { AppController } from './app.controller';
810
import { AppService } from './app.service';
11+
import { ExpressCustomLoader } from './express-custom.loader';
912
import { Admin } from './mongoose/admin-model';
1013
import { MongooseSchemasModule } from './mongoose/mongoose.module';
1114

15+
AdminBro.registerAdapter(AdminBroMongoose);
16+
1217
@Module({
1318
imports: [
1419
MongooseModule.forRoot('mongodb://localhost:27017/nest'),
@@ -32,6 +37,7 @@ import { MongooseSchemasModule } from './mongoose/mongoose.module';
3237
cookiePassword: 'testPass',
3338
},
3439
}),
40+
customLoader: ExpressCustomLoader,
3541
}),
3642
MongooseSchemasModule,
3743
],
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/* eslint-disable no-underscore-dangle */
2+
import AdminBro from 'admin-bro';
3+
import { Injectable } from '@nestjs/common';
4+
import { AbstractHttpAdapter } from '@nestjs/core';
5+
6+
import { AbstractLoader } from '../../src/loaders/abstract.loader';
7+
import { AdminModuleOptions } from '../../src/interfaces/admin-module-options.interface';
8+
import { ExpressLoader } from '../../src/loaders/express.loader';
9+
10+
@Injectable()
11+
export class ExpressCustomLoader extends AbstractLoader {
12+
public register(
13+
admin: AdminBro,
14+
httpAdapter: AbstractHttpAdapter,
15+
options: AdminModuleOptions,
16+
) {
17+
// eslint-disable-next-line no-console
18+
console.log('Custom loader')
19+
new ExpressLoader().register(admin, httpAdapter, options);
20+
}
21+
}

example-app/src/main.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
1-
import AdminBro from 'admin-bro';
2-
import AdminBroMongoose from '@admin-bro/mongoose';
1+
32
import { NestFactory } from '@nestjs/core';
3+
import { ValidationPipe } from '@nestjs/common';
44

55
import { AppModule } from './app.module';
66

7-
AdminBro.registerAdapter(AdminBroMongoose);
8-
97
const bootstrap = async () => {
108
const app = await NestFactory.create(AppModule);
9+
app.useGlobalPipes(new ValidationPipe({
10+
transform: true,
11+
whitelist: true,
12+
}))
1113
await app.listen(3000);
1214
}
1315
bootstrap();

example-app/test/app.e2e-spec.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Test, TestingModule } from '@nestjs/testing';
2-
import * as request from 'supertest';
2+
import request from 'supertest';
33

44
import { AppModule } from './../src/app.module';
55

@@ -19,4 +19,10 @@ describe('AppController (e2e)', () => {
1919
.get('/')
2020
.expect(200)
2121
.expect('Hello World!'));
22+
23+
it('/ (POST)', () => request(app.getHttpServer())
24+
.post('/')
25+
.send({ hello: 'hello' })
26+
.expect(201)
27+
.expect('hello'));
2228
});

0 commit comments

Comments
 (0)