Skip to content

Commit 58fb85e

Browse files
committed
Added cace support for find request
1 parent 39d8aa4 commit 58fb85e

File tree

182 files changed

+3281
-830
lines changed

Some content is hidden

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

182 files changed

+3281
-830
lines changed

apps/gateway-admin/src/app.module.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ require('dotenv').config();
2222
{ name: 'user', url: 'http://localhost:9000/graphql' },
2323
{ name: 'project', url: 'http://localhost:9100/graphql' },
2424
{ name: 'tenant', url: 'http://localhost:9200/graphql' },
25-
{ name: 'plan', url: 'http://localhost:9500/graphql' },
25+
{ name: 'payment', url: 'http://localhost:9500/graphql' },
2626
// more services
2727
],
2828
buildService({ url }) {

apps/service-auth/src/roles/roles.controller.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
1-
import { Controller } from '@nestjs/common';
2-
import { GrpcMethod } from '@nestjs/microservices';
1+
import { Body, Controller, Post } from '@nestjs/common';
32
import { BooleanPayload } from '@ultimatebackend/contracts';
43
import { NestCasbinService } from 'nestjs-casbin-mongodb';
54

6-
@Controller('RoleService')
5+
@Controller('roles')
76
export class RolesController {
87
constructor(private readonly casbinService: NestCasbinService) {}
98

10-
@GrpcMethod('RoleService', 'CheckPermission')
11-
async checkPermission(data: { params: string[] }): Promise<BooleanPayload> {
9+
@Post('check-permission')
10+
async checkPermission(@Body() data: { params: string[] }): Promise<BooleanPayload> {
1211
const success = await this.casbinService.checkPermission(...data.params);
1312
return {
1413
success,
1514
};
1615
}
1716

18-
@GrpcMethod('RoleService', 'AddPolicy')
19-
async addPolicy(data: { params: string[] }): Promise<BooleanPayload> {
17+
@Post('add-policy')
18+
async addPolicy(@Body() data: { params: string[] }): Promise<BooleanPayload> {
2019
if (await this.casbinService.hasPolicy(...data.params) === false) {
2120
await this.casbinService.addPolicy(...data.params);
2221
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import { Module } from '@nestjs/common';
22
import { RolesResolver } from './roles.resolver';
33
import { RolesController } from './roles.controller';
4+
import { RolesService } from './roles.service';
45

56
@Module({
67
providers: [RolesResolver],
7-
controllers: [RolesController],
8+
controllers: [RolesController, RolesService],
89
})
910
export class RolesModule {}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { Test, TestingModule } from '@nestjs/testing';
2+
import { RolesController } from './roles.controller';
3+
import { NestCasbinModule } from 'nestjs-casbin-mongodb';
4+
import { resolve } from 'path';
5+
import { AppConfig } from '@graphqlcqrs/common/services/yaml.service';
6+
7+
describe('Roles Service', () => {
8+
let controller: RolesController;
9+
10+
beforeEach(async () => {
11+
const module: TestingModule = await Test.createTestingModule({
12+
imports: [
13+
NestCasbinModule.forRootAsync(
14+
AppConfig.casbin.dbUri,
15+
resolve('models/roles.conf'),
16+
AppConfig.casbin.dbName,
17+
'roles',
18+
),
19+
],
20+
controllers: [RolesController],
21+
}).compile();
22+
23+
controller = module.get<RolesController>(RolesController);
24+
});
25+
26+
it('should be defined', () => {
27+
expect(controller).toBeDefined();
28+
});
29+
});
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import { Controller } from '@nestjs/common';
2+
import { GrpcMethod } from '@nestjs/microservices';
3+
import { BooleanPayload } from '@ultimatebackend/contracts';
4+
import { NestCasbinService } from 'nestjs-casbin-mongodb';
5+
6+
@Controller()
7+
export class RolesService {
8+
constructor(private readonly casbinService: NestCasbinService) {}
9+
10+
@GrpcMethod('RoleService', 'CheckPermission')
11+
async checkPermission(data: { params: string[] }): Promise<BooleanPayload> {
12+
const success = await this.casbinService.checkPermission(...data.params);
13+
return {
14+
success,
15+
};
16+
}
17+
18+
@GrpcMethod('RoleService', 'AddPolicy')
19+
async addPolicy(data: { params: string[] }): Promise<BooleanPayload> {
20+
if (await this.casbinService.hasPolicy(...data.params) === false) {
21+
await this.casbinService.addPolicy(...data.params);
22+
}
23+
return {
24+
success: true,
25+
};
26+
}
27+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { Test, TestingModule } from '@nestjs/testing';
2+
import { AppController } from './app.controller';
3+
import { AppService } from './app.service';
4+
5+
describe('AppController', () => {
6+
let appController: AppController;
7+
8+
beforeEach(async () => {
9+
const app: TestingModule = await Test.createTestingModule({
10+
controllers: [AppController],
11+
providers: [AppService],
12+
}).compile();
13+
14+
appController = app.get<AppController>(AppController);
15+
});
16+
17+
describe('root', () => {
18+
it('should return "Hello World!"', () => {
19+
expect(appController.getHello()).toBe('Hello World!');
20+
});
21+
});
22+
});
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { Controller, Get } from '@nestjs/common';
2+
import { AppService } from './app.service';
3+
4+
@Controller()
5+
export class AppController {
6+
constructor(private readonly appService: AppService) {}
7+
8+
@Get()
9+
getHello(): string {
10+
return this.appService.getHello();
11+
}
12+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { Module } from '@nestjs/common';
2+
import { AppController } from './app.controller';
3+
import { AppService } from './app.service';
4+
import { SubscriptionModule } from './subscription/subscription.module';
5+
6+
@Module({
7+
imports: [SubscriptionModule],
8+
controllers: [AppController],
9+
providers: [AppService],
10+
})
11+
export class AppModule {}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { Injectable } from '@nestjs/common';
2+
3+
@Injectable()
4+
export class AppService {
5+
getHello(): string {
6+
return 'Hello World!';
7+
}
8+
}

apps/service-billing/src/main.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import { NestFactory } from '@nestjs/core';
2+
import { AppModule } from './app.module';
3+
import { AppUtils, authSetup, bloodTearsMiddleware, setupSwagger } from '@graphqlcqrs/common';
4+
import { setupGrpc } from '@graphqlcqrs/core';
5+
import { SwaggerModule } from '@nestjs/swagger';
6+
7+
// tslint:disable-next-line:no-var-requires
8+
const config = require('config-yml').load(process.env.NODE_ENV);
9+
10+
async function bootstrap() {
11+
const app = await NestFactory.create(AppModule);
12+
13+
app.enableCors({
14+
credentials: true,
15+
preflightContinue: true,
16+
});
17+
app.enableShutdownHooks();
18+
app.use(bloodTearsMiddleware);
19+
AppUtils.killAppWithGrace(app);
20+
authSetup(app);
21+
22+
const document = SwaggerModule.createDocument(app, setupSwagger());
23+
SwaggerModule.setup('api', app, document);
24+
25+
await app.listenAsync(
26+
parseInt(process.env.PORT, 10) ||
27+
parseInt(config.services?.billing?.port, 10) ||
28+
9600,
29+
);
30+
31+
await setupGrpc(app, 'billing', 'billing.proto', config.services?.billing?.grpcPort || 7300);
32+
}
33+
bootstrap();

0 commit comments

Comments
 (0)