Files
listify/listify-api/src/app.module.ts
Bastian Wagner cadb198949 notifications
2026-06-29 15:09:59 +02:00

77 lines
2.7 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 { AssistantModule } from './assistant/assistant.module';
import { AuditModule } from './audit/audit.module';
import { AuthModule } from './auth/auth.module';
import { DashboardModule } from './dashboard/dashboard.module';
import { ListTemplatesModule } from './list-templates/list-templates.module';
import { ListsModule } from './lists/lists.module';
import { MailModule } from './mail/mail.module';
import { McpModule } from './mcp/mcp.module';
import { NotificationsModule } from './notifications/notifications.module';
import { TasksModule } from './tasks/tasks.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(),
AssistantModule,
AuditModule,
AuthModule,
DashboardModule,
MailModule,
ListsModule,
ListTemplatesModule,
TasksModule,
NotificationsModule,
McpModule,
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}