create-chuntianxiaozhu
Version:
春天小猪模板工具
122 lines (119 loc) • 3.62 kB
text/typescript
import {
Logger,
MiddlewareConsumer,
Module,
NestModule,
OnModuleInit,
} from '@nestjs/common';
import { CommonModule } from './common/common.module';
import { TypeOrmModule } from '@nestjs/typeorm';
import { ConfigModule } from '@nestjs/config';
import { JwtModule } from '@nestjs/jwt';
import { AuthGuard } from './guards/auth.guard';
import { AuthModule } from './modules/auth/auth.module';
import { UserModule } from './modules/user/user.module';
import { AppController } from './app.controller';
import { CacheModule } from '@nestjs/cache-manager';
import { RolesGuard } from './guards/role.guard';
import { ThrottlerProxyGuard } from './guards/throttler.guard';
import { APP_GUARD } from '@nestjs/core';
import { ThrottlerModule } from '@nestjs/throttler';
import { ScheduleModule } from '@nestjs/schedule';
import { TicketsModule } from './modules/tickets/tickets.module';
import { OssModule } from './modules/oss/oss.module';
import { OrderModule } from './modules/order/order.module';
import { SettlementModule } from './modules/settlement/settlement.module';
import { ShortUrlModule } from './modules/short-url/short-url.module';
import { AppSchedule } from './schedules/app-schedule';
import { CorsMiddleware } from './middlewares/cors.middleware';
import { CorsController } from './cors.controller';
import { AiModule } from './modules/ai/ai.module';
import { EmailModule } from './modules/email/email.module';
@Module({
imports: [
// 这个一定要放在最前面,读取环境配置
ConfigModule.forRoot({
envFilePath: 'environment.properties',
}),
ScheduleModule.forRoot(),
JwtModule.register({
global: true,
secret: process.env.JWT_SECRET,
signOptions: { expiresIn: '7d' },
}),
TypeOrmModule.forRoot(
process.env.ENV == 'dev'
? {
type: 'mysql',
host: process.env.DATABASE_HOST,
port: 3306,
username: process.env.DATABASE_USER,
password: process.env.DATABASE_PASSWORD,
database: 'wecanplugin',
synchronize: true,
autoLoadEntities: true,
logging: true,
logger: 'file',
entityPrefix: 'wecan_',
dateStrings: true,
}
: {
type: 'mariadb',
host: process.env.DATABASE_HOST,
port: 3306,
username: process.env.DATABASE_USER,
password: process.env.DATABASE_PASSWORD,
database: 'wecanplugin',
synchronize: true,
autoLoadEntities: true,
entityPrefix: 'wecan_',
dateStrings: true,
},
),
CacheModule.register({
isGlobal: true,
}),
// 60秒内最多10个请求
ThrottlerModule.forRoot({
ttl: 60,
limit: 10,
}),
CommonModule,
AuthModule,
UserModule,
TicketsModule,
OssModule,
OrderModule,
SettlementModule,
ShortUrlModule,
AiModule,
EmailModule,
],
controllers: [AppController, CorsController],
providers: [
{
provide: APP_GUARD,
useClass: AuthGuard,
},
{
provide: APP_GUARD,
useClass: RolesGuard,
},
{
provide: APP_GUARD,
useClass: ThrottlerProxyGuard,
},
AppSchedule,
],
})
export class AppModule implements NestModule, OnModuleInit {
constructor() {}
configure(consumer: MiddlewareConsumer) {
// 配置中间件
Logger.log('注册跨域中间件');
consumer.apply(CorsMiddleware).forRoutes('/c/*');
}
async onModuleInit() {
Logger.log('初始化数据仓库');
}
}