import { Module } from '@nestjs/common'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { TypeOrmModule } from '@nestjs/typeorm'; import { AppController } from './app.controller'; import { TemplateService } from './templates/index'; import { TemplateManager } from './templates/types'; import { databaseConfig } from './config/database.config'; import { N8nTemplateEntity } from './entities/n8n-template.entity'; import { TemplateExecutionEntity } from './entities/template-execution.entity'; import { UserEntity } from './entities/user.entity'; import { PlatformUserEntity } from './entities/platform-user.entity'; import { ExtensionDataEntity } from './entities/extension-data.entity'; import { UserCreditEntity } from './entities/user-credit.entity'; import { UserSubscriptionEntity } from './entities/user-subscription.entity'; import { AdWatchEntity } from './entities/ad-watch.entity'; import { N8nTemplateFactoryService } from './services/n8n-template-factory.service'; import { TemplateController } from './controllers/template.controller'; import { PlatformModule } from './platform/platform.module'; import { ContentModerationModule } from './content-moderation/content-moderation.module'; import { HttpModule } from '@nestjs/axios'; import { JwtModule } from '@nestjs/jwt'; @Module({ imports: [ HttpModule, JwtModule.registerAsync({ inject: [ConfigService], useFactory: (config: ConfigService) => ({ secret: config.get('JWT_SECRET'), signOptions: { expiresIn: '24h' }, }), }), ConfigModule.forRoot({ isGlobal: true, envFilePath: ['.env.local', '.env'], }), TypeOrmModule.forRootAsync({ inject: [ConfigService], useFactory: (configService: ConfigService) => databaseConfig(configService), }), TypeOrmModule.forFeature([ N8nTemplateEntity, TemplateExecutionEntity, UserEntity, PlatformUserEntity, ExtensionDataEntity, UserCreditEntity, UserSubscriptionEntity, AdWatchEntity, ]), PlatformModule, ContentModerationModule, ], controllers: [AppController, TemplateController], providers: [TemplateService, TemplateManager, N8nTemplateFactoryService], exports: [N8nTemplateFactoryService], }) export class AppModule { }