feat: first commit

This commit is contained in:
2024-10-26 12:10:13 +08:00
parent b244826aa1
commit b064c4cb87
158 changed files with 18888 additions and 1 deletions

79
server/src/main.ts Normal file
View File

@@ -0,0 +1,79 @@
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { Logger, ValidationPipe } from '@nestjs/common';
import { PrismaService } from './prisma/prisma.service';
import { ConfigService } from './system/config/config.service';
import { HttpExceptionFilter } from 'src/common/http-exception.filter';
import { HttpInterceptor } from 'src/common/http.interceptor';
import { WinstonModule } from 'nest-winston';
import { transports, format } from 'winston';
import 'winston-daily-rotate-file';
async function bootstrap() {
const logFormat = format.combine(
format.timestamp(),
format.printf((info) => {
return `${info.timestamp} ${info.level} ${info.context} ${info.message}`;
}),
);
const app = await NestFactory.create(AppModule, {
logger: WinstonModule.createLogger({
transports: [
// 记录错误日志
new transports.DailyRotateFile({
filename: `logs/%DATE%/error.log`,
level: 'error',
datePattern: 'YYYY-MM-DD',
maxFiles: '30d',
format: logFormat,
}),
// logging all level
new transports.DailyRotateFile({
filename: `logs/%DATE%/combined.log`,
datePattern: 'YYYY-MM-DD',
maxFiles: '30d',
format: logFormat,
}),
// 控制台输出
new transports.Console({
format: format.combine(
format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
format.colorize({ all: true }),
logFormat,
),
}),
],
}),
});
app.useGlobalPipes(
new ValidationPipe({
transform: true,
whitelist: true,
}),
);
// 全局异常过滤器
app.useGlobalFilters(new HttpExceptionFilter());
app.useGlobalInterceptors(new HttpInterceptor());
// prisma
const prismaService = app.get(PrismaService);
await prismaService.enableShutdownHooks(app);
// 同步配置到redis
const configService = app.get(ConfigService);
await configService.syncConfig();
// 跨域
app.enableCors();
// 设置全局前缀
app.setGlobalPrefix('api');
const logger = new Logger('Server Running');
await app.listen(3000, '0.0.0.0', async () => {
logger.log(`Application is running on: ${await app.getUrl()}`);
});
}
bootstrap();