Files
listify/listify-api/src/app.module.ts
Bastian Wagner 93a91c7bf6 ui
2026-06-10 14:15:16 +02:00

64 lines
2.3 KiB
TypeScript

import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { EventEmitterModule } from '@nestjs/event-emitter';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { AuditModule } from './audit/audit.module';
import { AuthModule } from './auth/auth.module';
import { ListTemplatesModule } from './list-templates/list-templates.module';
import { ListsModule } from './lists/lists.module';
import { MailModule } from './mail/mail.module';
import {
databaseLoggerOptionsFromEnv,
parseDatabaseLogging,
slowQueryThresholdFromEnv,
} from './database/database-logging.config';
import { DatabaseLogger } from './database/database.logger';
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true }),
TypeOrmModule.forRootAsync({
inject: [ConfigService],
useFactory: (configService: ConfigService) => {
const env = {
DB_LOGGING: configService.get<string>('DB_LOGGING', 'false'),
DB_LOG_PARAMETERS: configService.get<string>('DB_LOG_PARAMETERS', 'false'),
DB_LOG_MAX_PARAM_LENGTH: configService.get<string>(
'DB_LOG_MAX_PARAM_LENGTH',
'500',
),
DB_SLOW_QUERY_THRESHOLD_MS: configService.get<string>(
'DB_SLOW_QUERY_THRESHOLD_MS',
'500',
),
};
return {
type: 'mysql',
host: configService.get<string>('DB_HOST', 'localhost'),
port: Number(configService.get<string>('DB_PORT', '3306')),
username: configService.get<string>('DB_USERNAME', 'root'),
password: configService.get<string>('DB_PASSWORD', ''),
database: configService.get<string>('DB_DATABASE', 'listify'),
autoLoadEntities: true,
synchronize: true,
logging: parseDatabaseLogging(env.DB_LOGGING),
logger: new DatabaseLogger(databaseLoggerOptionsFromEnv(env)),
maxQueryExecutionTime: slowQueryThresholdFromEnv(env),
};
},
}),
EventEmitterModule.forRoot(),
AuditModule,
AuthModule,
MailModule,
ListsModule,
ListTemplatesModule,
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}