251120:1700 Backend T3.4

This commit is contained in:
admin
2025-11-20 17:14:15 +07:00
parent 859475b9f0
commit 20c0f51e2a
42 changed files with 1818 additions and 10 deletions

View File

@@ -1,15 +1,22 @@
// File: src/app.module.ts
import { Module } from '@nestjs/common';
import { APP_GUARD } from '@nestjs/core'; // <--- เพิ่ม Import นี้ T2.4
import { ConfigModule, ConfigService } from '@nestjs/config';
import { TypeOrmModule } from '@nestjs/typeorm';
import { BullModule } from '@nestjs/bullmq'; // Import BullModule
import { ThrottlerModule, ThrottlerGuard } from '@nestjs/throttler'; // <--- เพิ่ม Import นี้ T2.4
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { envValidationSchema } from './common/config/env.validation.js'; // สังเกต .js สำหรับ ESM
import { CommonModule } from './common/common.module';
// import { CommonModule } from './common/common.module';
import { UserModule } from './modules/user/user.module';
import { ProjectModule } from './modules/project/project.module';
import { FileStorageModule } from './modules/file-storage/file-storage.module';
import { DocumentNumberingModule } from './modules/document-numbering/document-numbering.module';
import { AuthModule } from './common/auth/auth.module.js'; // <--- เพิ่ม Import นี้ T2.4
import { JsonSchemaModule } from './modules/json-schema/json-schema.module.js';
import { WorkflowEngineModule } from './modules/workflow-engine/workflow-engine.module';
import { CorrespondenceModule } from './modules/correspondence/correspondence.module';
@Module({
imports: [
// 1. Setup Config Module พร้อม Validation
@@ -22,6 +29,13 @@ import { ProjectModule } from './modules/project/project.module';
abortEarly: true,
},
}),
// 🛡️ T2.4 1. Setup Throttler Module (Rate Limiting)
ThrottlerModule.forRoot([
{
ttl: 60000, // 60 วินาที (Time to Live)
limit: 100, // ยิงได้สูงสุด 100 ครั้ง (Global Default)
},
]),
// 2. Setup TypeORM (MariaDB)
TypeOrmModule.forRootAsync({
@@ -39,7 +53,7 @@ import { ProjectModule } from './modules/project/project.module';
// synchronize: configService.get<string>('NODE_ENV') === 'development',
// แก้บรรทัดนี้เป็น false ครับ
// เพราะเราใช้ SQL Script สร้าง DB แล้ว ไม่ต้องการให้ TypeORM มาแก้ Structure อัตโนมัติ
synchronize: false,
synchronize: false, // เราใช้ false ตามที่ตกลงกัน
}),
}),
@@ -55,14 +69,24 @@ import { ProjectModule } from './modules/project/project.module';
},
}),
}),
CommonModule,
AuthModule,
// CommonModule,
UserModule,
ProjectModule,
FileStorageModule,
DocumentNumberingModule,
JsonSchemaModule,
WorkflowEngineModule,
CorrespondenceModule, // <--- เพิ่ม
],
controllers: [AppController],
providers: [AppService],
providers: [
AppService,
// 🛡️ 2. Register Global Guard
{
provide: APP_GUARD,
useClass: ThrottlerGuard,
},
],
})
export class AppModule {}