fix(server): avoid repeatly register providers (#5265)

This commit is contained in:
liuyi
2023-12-13 02:12:37 +00:00
parent f4a52c031f
commit 797cd5c6eb
12 changed files with 34 additions and 53 deletions
@@ -1,7 +1,7 @@
import { Module } from '@nestjs/common';
import { Field, ObjectType, Query } from '@nestjs/graphql';
export const { SERVER_FLAVOR } = process.env;
import { SERVER_FLAVOR } from '../config';
@ObjectType()
export class ServerConfigType {
@@ -19,7 +19,7 @@ export class ServerConfigResolver {
serverConfig(): ServerConfigType {
return {
version: AFFiNE.version,
flavor: SERVER_FLAVOR || 'allinone',
flavor: SERVER_FLAVOR,
};
}
}
@@ -1,38 +1,12 @@
import { DynamicModule } from '@nestjs/common';
import { Module } from '@nestjs/common';
import { DocHistoryManager } from './history';
import { DocManager } from './manager';
export class DocModule {
/**
* @param automation whether enable update merging automation logic
*/
private static defModule(automation = true): DynamicModule {
return {
module: DocModule,
providers: [
{
provide: 'DOC_MANAGER_AUTOMATION',
useValue: automation,
},
DocManager,
DocHistoryManager,
],
exports: [DocManager, DocHistoryManager],
};
}
static forRoot() {
return this.defModule();
}
static forSync(): DynamicModule {
return this.defModule(false);
}
static forFeature(): DynamicModule {
return this.defModule(false);
}
}
@Module({
providers: [DocManager, DocHistoryManager],
exports: [DocManager, DocHistoryManager],
})
export class DocModule {}
export { DocHistoryManager, DocManager };
@@ -1,5 +1,4 @@
import {
Inject,
Injectable,
Logger,
OnModuleDestroy,
@@ -97,8 +96,6 @@ export class DocManager implements OnModuleInit, OnModuleDestroy {
private busy = false;
constructor(
@Inject('DOC_MANAGER_AUTOMATION')
private readonly automation: boolean,
private readonly db: PrismaService,
private readonly config: Config,
private readonly cache: Cache,
@@ -106,7 +103,7 @@ export class DocManager implements OnModuleInit, OnModuleDestroy {
) {}
onModuleInit() {
if (this.automation) {
if (this.config.doc.manager.enableUpdateAutoMerging) {
this.logger.log('Use Database');
this.setup();
}
+6 -5
View File
@@ -1,8 +1,9 @@
import { DynamicModule, Type } from '@nestjs/common';
import { ScheduleModule } from '@nestjs/schedule';
import { SERVER_FLAVOR } from '../config';
import { GqlModule } from '../graphql.module';
import { SERVER_FLAVOR, ServerConfigModule } from './config';
import { ServerConfigModule } from './config';
import { DocModule } from './doc';
import { PaymentModule } from './payment';
import { SelfHostedModule } from './self-hosted';
@@ -14,7 +15,7 @@ const BusinessModules: (Type | DynamicModule)[] = [];
switch (SERVER_FLAVOR) {
case 'sync':
BusinessModules.push(SyncModule, DocModule.forSync());
BusinessModules.push(SyncModule, DocModule);
break;
case 'selfhosted':
BusinessModules.push(
@@ -25,7 +26,7 @@ switch (SERVER_FLAVOR) {
WorkspaceModule,
UsersModule,
SyncModule,
DocModule.forRoot()
DocModule
);
break;
case 'graphql':
@@ -35,7 +36,7 @@ switch (SERVER_FLAVOR) {
GqlModule,
WorkspaceModule,
UsersModule,
DocModule.forRoot(),
DocModule,
PaymentModule
);
break;
@@ -48,7 +49,7 @@ switch (SERVER_FLAVOR) {
WorkspaceModule,
UsersModule,
SyncModule,
DocModule.forRoot(),
DocModule,
PaymentModule
);
break;
@@ -5,7 +5,7 @@ import { PermissionService } from '../../workspaces/permission';
import { EventsGateway } from './events.gateway';
@Module({
imports: [DocModule.forFeature()],
imports: [DocModule],
providers: [EventsGateway, PermissionService],
})
export class EventsModule {}
@@ -8,7 +8,7 @@ import { PermissionService } from './permission';
import { PagePermissionResolver, WorkspaceResolver } from './resolver';
@Module({
imports: [DocModule.forFeature()],
imports: [DocModule],
controllers: [WorkspacesController],
providers: [
WorkspaceResolver,