2022-05-16 09:23:59 +00:00
|
|
|
|
import { CollectorEntity } from '@entities/collector.entity';
|
|
|
|
|
import { CommentEntity } from '@entities/comment.entity';
|
|
|
|
|
import { DocumentEntity } from '@entities/document.entity';
|
|
|
|
|
import { DocumentAuthorityEntity } from '@entities/document-authority.entity';
|
|
|
|
|
import { MessageEntity } from '@entities/message.entity';
|
|
|
|
|
import { TemplateEntity } from '@entities/template.entity';
|
2022-02-20 11:51:55 +00:00
|
|
|
|
import { UserEntity } from '@entities/user.entity';
|
2022-05-16 09:23:59 +00:00
|
|
|
|
import { ViewEntity } from '@entities/view.entity';
|
2022-02-20 11:51:55 +00:00
|
|
|
|
import { WikiEntity } from '@entities/wiki.entity';
|
|
|
|
|
import { WikiUserEntity } from '@entities/wiki-user.entity';
|
2022-05-21 06:39:56 +00:00
|
|
|
|
import { getLogFileName } from '@helpers/log.helper';
|
2022-02-20 11:51:55 +00:00
|
|
|
|
import { CollectorModule } from '@modules/collector.module';
|
|
|
|
|
import { CommentModule } from '@modules/comment.module';
|
2022-05-16 09:23:59 +00:00
|
|
|
|
import { DocumentModule } from '@modules/document.module';
|
|
|
|
|
import { FileModule } from '@modules/file.module';
|
2022-02-20 11:51:55 +00:00
|
|
|
|
import { MessageModule } from '@modules/message.module';
|
|
|
|
|
import { TemplateModule } from '@modules/template.module';
|
2022-05-16 09:23:59 +00:00
|
|
|
|
import { UserModule } from '@modules/user.module';
|
2022-02-20 11:51:55 +00:00
|
|
|
|
import { ViewModule } from '@modules/view.module';
|
2022-05-16 09:23:59 +00:00
|
|
|
|
import { WikiModule } from '@modules/wiki.module';
|
2022-05-21 06:39:56 +00:00
|
|
|
|
import { forwardRef, Inject, Module } from '@nestjs/common';
|
2022-05-16 09:23:59 +00:00
|
|
|
|
import { ConfigModule, ConfigService } from '@nestjs/config';
|
2022-05-21 06:39:56 +00:00
|
|
|
|
import { Cron, ScheduleModule } from '@nestjs/schedule';
|
2022-05-16 09:23:59 +00:00
|
|
|
|
import { TypeOrmModule, TypeOrmModuleOptions } from '@nestjs/typeorm';
|
|
|
|
|
import { getConfig } from '@think/config';
|
2022-05-21 06:39:56 +00:00
|
|
|
|
import * as fs from 'fs-extra';
|
|
|
|
|
import { LoggerModule } from 'nestjs-pino';
|
|
|
|
|
import * as path from 'path';
|
|
|
|
|
import pino from 'pino';
|
2022-02-20 11:51:55 +00:00
|
|
|
|
|
|
|
|
|
const ENTITIES = [
|
|
|
|
|
UserEntity,
|
|
|
|
|
WikiEntity,
|
|
|
|
|
WikiUserEntity,
|
|
|
|
|
DocumentAuthorityEntity,
|
|
|
|
|
DocumentEntity,
|
|
|
|
|
CollectorEntity,
|
|
|
|
|
CommentEntity,
|
|
|
|
|
MessageEntity,
|
|
|
|
|
TemplateEntity,
|
|
|
|
|
ViewEntity,
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
const MODULES = [
|
|
|
|
|
UserModule,
|
|
|
|
|
WikiModule,
|
|
|
|
|
DocumentModule,
|
|
|
|
|
CollectorModule,
|
|
|
|
|
FileModule,
|
|
|
|
|
CommentModule,
|
|
|
|
|
MessageModule,
|
|
|
|
|
TemplateModule,
|
|
|
|
|
ViewModule,
|
|
|
|
|
];
|
|
|
|
|
|
2022-05-21 06:39:56 +00:00
|
|
|
|
const ONE_DAY = 24 * 60 * 60 * 1000;
|
|
|
|
|
|
2022-02-20 11:51:55 +00:00
|
|
|
|
@Module({
|
|
|
|
|
imports: [
|
|
|
|
|
ConfigModule.forRoot({
|
|
|
|
|
cache: true,
|
|
|
|
|
load: [getConfig],
|
|
|
|
|
isGlobal: true,
|
|
|
|
|
}),
|
2022-05-21 06:39:56 +00:00
|
|
|
|
ScheduleModule.forRoot(),
|
|
|
|
|
process.env.NODE_ENV === 'production' &&
|
|
|
|
|
LoggerModule.forRoot({
|
|
|
|
|
pinoHttp: {
|
|
|
|
|
stream: pino.destination({
|
|
|
|
|
dest: `./logs/${getLogFileName(new Date())}`,
|
|
|
|
|
minLength: 4096,
|
|
|
|
|
mkdir: true,
|
|
|
|
|
sync: false,
|
|
|
|
|
}),
|
|
|
|
|
},
|
|
|
|
|
}),
|
2022-02-20 11:51:55 +00:00
|
|
|
|
TypeOrmModule.forRootAsync({
|
|
|
|
|
imports: [ConfigModule],
|
|
|
|
|
inject: [ConfigService],
|
|
|
|
|
useFactory: (config: ConfigService) => {
|
|
|
|
|
return {
|
|
|
|
|
type: 'mysql',
|
|
|
|
|
entities: ENTITIES,
|
|
|
|
|
keepConnectionAlive: true,
|
|
|
|
|
...config.get('db.mysql'),
|
|
|
|
|
} as TypeOrmModuleOptions;
|
|
|
|
|
},
|
|
|
|
|
}),
|
|
|
|
|
...MODULES,
|
2022-05-21 06:39:56 +00:00
|
|
|
|
].filter(Boolean),
|
2022-02-20 11:51:55 +00:00
|
|
|
|
controllers: [],
|
|
|
|
|
providers: [],
|
|
|
|
|
})
|
2022-05-21 06:39:56 +00:00
|
|
|
|
export class AppModule {
|
|
|
|
|
constructor(
|
|
|
|
|
@Inject(forwardRef(() => ConfigService))
|
|
|
|
|
private readonly configService: ConfigService
|
|
|
|
|
) {}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 每天早上9点,清理日志
|
|
|
|
|
*/
|
|
|
|
|
@Cron('0 0 9 * * *')
|
|
|
|
|
deleteLog() {
|
|
|
|
|
let retainDays = this.configService.get('server.logRetainDays');
|
|
|
|
|
const startDate = new Date(new Date().valueOf() - retainDays * ONE_DAY).valueOf();
|
|
|
|
|
|
|
|
|
|
do {
|
|
|
|
|
const filepath = path.join(__dirname, '../logs', getLogFileName(startDate, retainDays));
|
|
|
|
|
fs.removeSync(filepath);
|
|
|
|
|
retainDays -= 1;
|
|
|
|
|
} while (retainDays > 0);
|
|
|
|
|
}
|
|
|
|
|
}
|