1.0.1 • Published 4 years ago
@alvarolimajr/nestjs-sap-rfc v1.0.1
📚 Description
NestJS SAP RFC Client, providing convenient ABAP business logic consumption from NestJS
🛠️ Installation
npm install @alvarolimajr/nestjs-sap-rfc --save
🏃 Getting Started
Register SapModule
module in app.module.ts
import { SapModule } from '@alvarolimajr/nestjs-sap-rfc';
import { Module } from '@nestjs/common';
@Module({
imports: [
SapModule.createPool({
isGlobal: true, // for global module
name: 'service_name', // for multiple modules (OPTIONAL)
connectionParameters: {
/* see RfcConnectionParameters */
},
clientOptions: {
/* see RfcClientOptions */
},
poolOptions: {
/* see RfcPoolOptions */
},
}),
],
})
export class AppModule {}
Connection Pool (Async Module)
import { SapModule } from '@alvarolimajr/nestjs-sap-rfc';
import { Module } from '@nestjs/common';
@Module({
imports: [
SapModule.createPoolAsync({
isGlobal: true, // for global module
name: 'service_name', // for multiple modules (OPTIONAL)
useFactory: () => {
return {
connectionParameters: {
/* see RfcConnectionParameters */
},
clientOptions: {
/* see RfcClientOptions */
},
poolOptions: {
/* see RfcPoolOptions */
},
};
},
}),
],
})
export class AppModule {}
Connection Pool (Async Module + ConfigService)
import { SapModule } from '@alvarolimajr/nestjs-sap-rfc';
import { Module } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
@Module({
imports: [
SapModule.createPoolAsync({
isGlobal: true, // for global module
name: 'service_name', // for multiple modules (OPTIONAL)
useFactory: (config: ConfigService) => {
return {
connectionParameters: {
/* see RfcConnectionParameters */
/* config.get(...) */
},
clientOptions: {
/* see RfcClientOptions */
/* config.get(...) */
},
poolOptions: {
/* see RfcPoolOptions */
/* config.get(...) */
},
};
},
inject: [ConfigService],
}),
],
})
export class AppModule {}
import { SapModule } from '@alvarolimajr/nestjs-sap-rfc';
import { Module } from '@nestjs/common';
@Module({
imports: [
SapModule.createClient({
isGlobal: true, // for global module
name: 'service_name', // for multiple modules (OPTIONAL)
/* ...RfcConnectionParameters */
}),
],
})
export class AppModule {}
Direct Client (Async Module)
import { SapModule } from '@alvarolimajr/nestjs-sap-rfc';
import { Module } from '@nestjs/common';
@Module({
imports: [
SapModule.createClientAsync({
isGlobal: true, // for global module
name: 'service_name', // for multiple modules (OPTIONAL)
useFactory: () => {
return {
/* ...RfcConnectionParameters */
};
},
}),
],
})
export class AppModule {}
Direct Client (Async Module + ConfigService)
import { SapModule } from '@alvarolimajr/nestjs-sap-rfc';
import { Module } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
@Module({
imports: [
SapModule.createClientAsync({
isGlobal: true, // for global module
name: 'service_name', // for multiple modules (OPTIONAL)
useFactory: (config: ConfigService) => {
return {
/* ...RfcConnectionParameters */
};
},
inject: [ConfigService],
}),
],
})
export class AppModule {}
Inject SapService
import { InjectSapService, SapService } from '@alvarolimajr/nestjs-sap-rfc';
import { Injectable } from '@nestjs/common';
@Injectable()
export class MyService {
/**
* @param {SapService} sapService
*/
constructor(
@InjectSapService()
private readonly sapService: SapService,
) {}
public async test(): MySapInterface {
return this.sapService.execute<MySapInterface>('rfcName', {
...rfcParams,
});
}
}
Inject SapService by name
import { InjectSapService, SapService } from '@alvarolimajr/nestjs-sap-rfc';
import { Inject } from '@nestjs/common';
@Injectable()
export class MyService {
/**
* @param {SapService} sapService
*/
constructor(
@Inject('service_name')
private readonly sapService: SapService,
) {}
public async test(): MySapInterface {
return this.sapService.execute<MySapInterface>('rfcName', {
...rfcParams,
});
}
}
✅ Test
# unit tests
$ npm run test
# test coverage
$ npm run test:cov
💡 Generate Docs
The docs can be generated on-demand. This will produce a documentation folder with the required front-end files.
# generate docs for code
$ npm run doc
# generate docs for code and serve on http://localhost:8080
$ npm run doc:serve
⬆️ Commitizen
commitizen is a command line utility that makes it easier to create commit messages following the conventional commit format specification.
Use npm run commit
instead of git commit
to use commitizen.
👥 Stay in touch
- E-mail - Alvaro Lima Junior
🔨 Built With
✔️ Roadmap
The following improvements are currently in progress:
- Dynamic Configuration
1.0.1
4 years ago