BingLogyBlog-Backend/src/app.module.ts
laobinghu 37742571ae feat: 完成项目初始化并重构部署流程
主要变更:
- 添加完整的项目结构和模块(admin、articles、comments、users、session、oauth2、email、moderation、analytics、jobs 等)
- 实现系统初始化 API(/init/status 和 /init/run)
- 重写部署流程:迁移到 package.json scripts,删除 Makefile
- 优化部署脚本:deploy.sh、healthcheck.sh、backup.sh、restore.sh、verify-env.sh
- 更新 README.md:简化文档,整合部署指南
- 优化 AGENTS.md:精简到约 150 行,包含完整的代码规范和命令速查
- 配置 Docker Compose 自动化部署(prisma migrate deploy + seed)
- 生成 OAuth2 RSA 密钥对支持
- 添加环境变量验证和数据库备份恢复功能
2026-03-28 16:53:25 +08:00

57 lines
2.0 KiB
TypeScript

import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { ThrottlerModule } from '@nestjs/throttler';
import { AppConfigModule } from './config/config.module';
import { PrismaModule } from './modules/prisma/prisma.module';
import { SessionModule } from './modules/session/session.module';
import { OAuth2Module } from './modules/oauth2/oauth2.module';
import { MeModule } from './modules/me/me.module';
import { ArticlesModule } from './modules/articles/articles.module';
import { CommentsModule } from './modules/comments/comments.module';
import { ModerationModule } from './modules/moderation/moderation.module';
import { JobsModule } from './modules/jobs/jobs.module';
import { HealthModule } from './modules/health/health.module';
import { UsersModule } from './modules/users/users.module';
import { EmailModule } from './modules/email/email.module';
import { AnalyticsModule } from './modules/analytics/analytics.module';
import { AdminCommentsModule } from './modules/admin/admin-comments/admin-comments.module';
import { AdminArticlesModule } from './modules/admin/admin-articles/admin-articles.module';
import { InitModule } from './modules/init/init.module';
@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
}),
AppConfigModule,
PrismaModule,
SessionModule,
OAuth2Module,
MeModule,
ArticlesModule,
CommentsModule,
ModerationModule,
JobsModule,
HealthModule,
UsersModule,
EmailModule,
AnalyticsModule,
AdminCommentsModule,
AdminArticlesModule,
InitModule,
ThrottlerModule.forRootAsync({
imports: [ConfigModule],
useFactory: (configService: ConfigService) => {
const ttl = configService.get<number>('THROTTLE_TTL');
const limit = configService.get<number>('THROTTLE_LIMIT');
return {
ttl: ttl ?? 60000,
limit: limit ?? 100,
} as any; // Type assertion to bypass strict type checking
},
inject: [ConfigService],
}),
],
})
export class AppModule {}