This repository has been archived on 2025-03-21. You can view files and clone it, but cannot push or open issues or pull requests.
insiemesalute-3p-nx/apps/ebitemp-api/src/app/modules/database/database.module.ts

36 lines
1.2 KiB
TypeScript

import { Global, Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { TypeOrmModule } from '@nestjs/typeorm';
import { DataSource } from 'typeorm';
import { DatabaseConfig, databaseConfig } from './database.config';
import { APP_DATASOURCES } from './database.constants';
import { typeormTransactionalDataSourceFactory } from './utils/typeorm-data-source-factory';
import { typeormModuleOptionsFactory } from './utils/typeorm-module-options-factory';
const dataSources: DataSource[] = [];
const typeormModules = [
TypeOrmModule.forRootAsync({
imports: databaseConfig.asProvider().imports,
dataSourceFactory: typeormTransactionalDataSourceFactory(),
useFactory: async (dbConfig: DatabaseConfig) => {
const config = await typeormModuleOptionsFactory(dbConfig);
return config;
},
inject: [databaseConfig.KEY],
}),
];
const dataSourcesProvider = {
provide: APP_DATASOURCES,
useValue: dataSources,
};
@Global()
@Module({
imports: [ConfigModule.forFeature(databaseConfig), ...typeormModules],
providers: [dataSourcesProvider],
exports: [...typeormModules, dataSourcesProvider],
})
export class AppDatabaseModule {}