77 lines
2.7 KiB
TypeScript
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 {}
|