modify PostService and ContentModule

This commit is contained in:
2025-06-01 14:57:20 +08:00
parent 37f11a0097
commit fdd9d80310
4 changed files with 73 additions and 19 deletions
+54 -14
View File
@@ -1,4 +1,4 @@
import { Module } from '@nestjs/common';
import { DynamicModule, Module, ModuleMetadata } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
@@ -8,19 +8,59 @@ import * as repositories from '@/modules/content/repositories';
import * as services from '@/modules/content/services';
import { SanitizeService } from '@/modules/content/services/SanitizeService';
import { PostService } from '@/modules/content/services/post.service';
import { PostSubscriber } from '@/modules/content/subscribers/post.subscriber';
import { ContentConfig } from '@/modules/content/types';
import { DatabaseModule } from '@/modules/database/database.module';
@Module({
imports: [
TypeOrmModule.forFeature(Object.values(entities)),
DatabaseModule.forRepository(Object.values(repositories)),
],
controllers: Object.values(controllers),
providers: [...Object.values(services), PostSubscriber, SanitizeService],
exports: [
...Object.values(services),
DatabaseModule.forRepository(Object.values(repositories)),
],
})
export class ContentModule {}
@Module({})
export class ContentModule {
static forRoot(configRegister?: () => ContentConfig): DynamicModule {
const config: Required<ContentConfig> = {
SearchType: 'mysql',
...(configRegister ? configRegister() : {}),
};
const providers: ModuleMetadata['providers'] = [
...Object.values(services),
SanitizeService,
PostSubscriber,
{
provide: PostService,
inject: [
repositories.PostRepository,
repositories.CategoryRepository,
repositories.TagRepository,
services.CategoryService,
],
useFactory(
postRepository: repositories.PostRepository,
categoryRepository: repositories.CategoryRepository,
tagRepository: repositories.TagRepository,
categoryService: services.CategoryService,
) {
return new PostService(
postRepository,
categoryRepository,
categoryService,
tagRepository,
config.SearchType,
);
},
},
];
return {
module: ContentModule,
imports: [
TypeOrmModule.forFeature(Object.values(entities)),
DatabaseModule.forRepository(Object.values(repositories)),
],
controllers: Object.values(controllers),
providers,
exports: [
...Object.values(services),
PostService,
DatabaseModule.forRepository(Object.values(repositories)),
],
};
}
}