import { Module } from '@nestjs/common'
import { TypeOrmModule } from '@nestjs/typeorm'
import { DataSource } from 'typeorm'
import { addTransactionalDataSource } from 'typeorm-transactional'
import { TypeOrmOptions } from '../../config'

@Module({
	imports: [
		TypeOrmModule.forRootAsync({
			useClass: TypeOrmOptions,
			dataSourceFactory: async (options) => {
				if (!options) throw new Error('Invalid typeorm config provided')
				return addTransactionalDataSource(new DataSource(options))
			},
		}),
	],
})
export class DatabaseModule {}
