| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- import { DynamicModule, Module } from '@nestjs/common';
- import { TypeOrmModule } from '@nestjs/typeorm';
- import { DataSourceOptions } from 'typeorm';
- import { ConfigModule } from '../config/config.module';
- import { ConfigService } from '../config/config.service';
- import { TypeOrmLogger } from '../config/logger/typeorm-logger';
- import { TransactionSubscriber } from './transaction-subscriber';
- import { TransactionWrapper } from './transaction-wrapper';
- import { TransactionalConnection } from './transactional-connection';
- let defaultTypeOrmModule: DynamicModule;
- @Module({
- imports: [ConfigModule],
- providers: [TransactionalConnection, TransactionSubscriber, TransactionWrapper],
- exports: [TransactionalConnection, TransactionSubscriber, TransactionWrapper],
- })
- export class ConnectionModule {
- static forRoot(): DynamicModule {
- if (!defaultTypeOrmModule) {
- defaultTypeOrmModule = TypeOrmModule.forRootAsync({
- imports: [ConfigModule],
- useFactory: (configService: ConfigService) => {
- const { dbConnectionOptions } = configService;
- const logger = ConnectionModule.getTypeOrmLogger(dbConnectionOptions);
- return {
- ...dbConnectionOptions,
- logger,
- };
- },
- inject: [ConfigService],
- });
- }
- return {
- module: ConnectionModule,
- imports: [defaultTypeOrmModule],
- };
- }
- static forPlugin(): DynamicModule {
- return {
- module: ConnectionModule,
- imports: [TypeOrmModule.forFeature()],
- };
- }
- static getTypeOrmLogger(dbConnectionOptions: DataSourceOptions) {
- if (!dbConnectionOptions.logger) {
- return new TypeOrmLogger(dbConnectionOptions.logging);
- } else {
- return dbConnectionOptions.logger;
- }
- }
- }
|