主要变更: - 添加完整的项目结构和模块(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 密钥对支持 - 添加环境变量验证和数据库备份恢复功能
57 lines
2.0 KiB
TypeScript
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 {}
|