45 lines
1.6 KiB
TypeScript
45 lines
1.6 KiB
TypeScript
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<boolean>('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<string>('PG_HOST') ?? 'localhost',
|
|
port: configService.get<number>('PG_PORT') ?? 5432,
|
|
username: configService.get<string>('PG_USER') ?? 'common-cents',
|
|
password: configService.get<string>('PG_PASS') ?? 'CommonCents_123!'
|
|
};
|
|
}
|
|
|
|
return defaults;
|
|
}
|
|
}),
|
|
MerchantsModule,
|
|
TagsModule,
|
|
CategoriesModule,
|
|
SubCategoriesModule,
|
|
ExpensesModule
|
|
],
|
|
controllers: [AppController]
|
|
})
|
|
export class AppModule { }
|