import { Module } from "@nestjs/common"; import { ConfigModule, ConfigService } from "@nestjs/config"; import { ScheduleModule } from "@nestjs/schedule"; import { TypeOrmModule } from "@nestjs/typeorm"; import { BrowserModule } from "./browser/browser.module"; import { AppConfig, validateAppConfig } from "./config/app.config"; import { CredentialEntity } from "./credential/credential.entity"; import { CredentialModule } from "./credential/credential.module"; import { EnvironmentEntity } from "./environment/environment.entity"; import { EnvironmentModule } from "./environment/environment.module"; import { HealthModule } from "./health/health.module"; import { McpModule } from "./mcp/mcp.module"; import { ScenarioCredentialEntity } from "./scenario/scenario-credential.entity"; import { ScenarioRunLogEntity } from "./scenario/scenario-run-log.entity"; import { ScenarioRunStepEntity } from "./scenario/scenario-run-step.entity"; import { ScenarioRunEntity } from "./scenario/scenario-run.entity"; import { ScenarioStepEntity } from "./scenario/scenario-step.entity"; import { ScenarioEntity } from "./scenario/scenario.entity"; import { ScenarioModule } from "./scenario/scenario.module"; import { SessionEntity } from "./session/session.entity"; import { SnippetEntity } from "./snippet/snippet.entity"; import { SnippetModule } from "./snippet/snippet.module"; @Module({ imports: [ ConfigModule.forRoot({ isGlobal: true, envFilePath: ".env", validate: validateAppConfig, }), ScheduleModule.forRoot(), TypeOrmModule.forRootAsync({ inject: [ConfigService], useFactory: (config: ConfigService) => ({ type: "better-sqlite3", database: config.get("DB_PATH"), entities: [ SessionEntity, EnvironmentEntity, CredentialEntity, ScenarioEntity, ScenarioStepEntity, ScenarioRunEntity, ScenarioRunStepEntity, ScenarioRunLogEntity, ScenarioCredentialEntity, SnippetEntity, ], synchronize: true, }), }), BrowserModule, EnvironmentModule, CredentialModule, ScenarioModule, SnippetModule, McpModule, HealthModule, ], }) export class AppModule {}