import { Module } from '@nestjs/common'; import { AppController } from './app.controller'; import { TypeOrmModule } from '@nestjs/typeorm'; import { MerchantsModule } from './merchants/merchants.module'; import { TagsModule } from './tags/tags.module'; import { CategoriesModule } from './categories/categories.module'; import { SubCategoriesModule } from './sub-categories/sub-categories.module'; import { ExpensesModule } from './expenses/expenses.module'; import { ConfigModule, ConfigService } from '@nestjs/config'; @Module({ imports: [ TypeOrmModule.forRootAsync({ imports: [ConfigModule], inject: [ConfigService], useFactory: (configService: ConfigService) => { const type = configService.get<'sqlite' | 'postgres'>('DB_TYPE') ?? 'sqlite'; const synchronize = configService.get('DB_SYNC') ?? true; const autoLoadEntities = true; const database = type === 'sqlite' ? 'common-cents.db' : 'common-cents'; const defaults = { type, database, synchronize, autoLoadEntities }; if (type === 'postgres') { return { ...defaults, host: configService.get('PG_HOST') ?? 'localhost', port: configService.get('PG_PORT') ?? 5432, username: configService.get('PG_USER') ?? 'common-cents', password: configService.get('PG_PASS') ?? 'CommonCents_123!' }; } return defaults; } }), MerchantsModule, TagsModule, CategoriesModule, SubCategoriesModule, ExpensesModule ], controllers: [AppController] }) export class AppModule { }