Files
aurak/server/src/app.module.ts
T
Developer eb0798de5b P2-1: remove dead cost-control module (3 files)
P2-2: switch TypeORM to autoLoadEntities: true

Remove unused vision-pipeline-cost-aware.service.ts,
cost-control.service.ts and its orphan module.
Switch explicit entities[] list to autoLoadEntities.
2026-05-19 09:39:41 +08:00

101 lines
3.5 KiB
TypeScript

import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { TypeOrmModule } from '@nestjs/typeorm';
import { ScheduleModule } from '@nestjs/schedule';
import { ServeStaticModule } from '@nestjs/serve-static';
import { join } from 'path';
import { APP_GUARD, APP_INTERCEPTOR } from '@nestjs/core';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { ApiModule } from './api/api.module';
import { ElasticsearchModule } from './elasticsearch/elasticsearch.module';
import { UploadModule } from './upload/upload.module';
import { ChatModule } from './chat/chat.module';
import { AuthModule } from './auth/auth.module';
import { I18nModule } from './i18n/i18n.module';
import { JwtAuthGuard } from './auth/jwt-auth.guard';
import { CombinedAuthGuard } from './auth/combined-auth.guard';
import { KnowledgeBaseModule } from './knowledge-base/knowledge-base.module';
import { ModelConfigModule } from './model-config/model-config.module';
import { UserModule } from './user/user.module';
import { TikaModule } from './tika/tika.module';
import { VisionModule } from './vision/vision.module';
import { LibreOfficeModule } from './libreoffice/libreoffice.module';
import { Pdf2ImageModule } from './pdf2image/pdf2image.module';
import { VisionPipelineModule } from './vision-pipeline/vision-pipeline.module';
import { KnowledgeGroupModule } from './knowledge-group/knowledge-group.module';
import { SearchHistoryModule } from './search-history/search-history.module';
import { NoteModule } from './note/note.module';
import { PodcastModule } from './podcasts/podcast.module';
import { ImportTaskModule } from './import-task/import-task.module';
import { AssessmentModule } from './assessment/assessment.module';
import { I18nMiddleware } from './i18n/i18n.middleware';
import { TenantMiddleware } from './tenant/tenant.middleware';
import { TenantModule } from './tenant/tenant.module';
import { SuperAdminModule } from './super-admin/super-admin.module';
import { AdminModule } from './admin/admin.module';
import { FeishuModule } from './feishu/feishu.module';
@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
ignoreEnvFile: false,
}),
ServeStaticModule.forRoot({
rootPath: join(process.cwd(), 'uploads'),
serveRoot: '/uploads',
}),
ScheduleModule.forRoot(),
TypeOrmModule.forRootAsync({
imports: [ConfigModule],
inject: [ConfigService],
useFactory: (configService: ConfigService) => ({
type: 'better-sqlite3',
database: configService.get<string>('DATABASE_PATH'),
autoLoadEntities: true,
synchronize: true,
}),
}),
AuthModule,
I18nModule,
UserModule,
TenantModule,
ModelConfigModule,
KnowledgeBaseModule,
KnowledgeGroupModule,
SearchHistoryModule,
NoteModule,
PodcastModule,
TikaModule,
VisionModule,
LibreOfficeModule,
Pdf2ImageModule,
VisionPipelineModule,
ApiModule,
ElasticsearchModule,
UploadModule,
ChatModule,
ImportTaskModule,
AssessmentModule,
SuperAdminModule,
AdminModule,
FeishuModule,
],
controllers: [AppController],
providers: [
AppService,
{
provide: APP_GUARD,
useClass: CombinedAuthGuard,
},
],
})
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer.apply(I18nMiddleware, TenantMiddleware).forRoutes('*');
}
}
// Trigger restart correct