diff --git a/packages/backend/server/src/__tests__/e2e/config/resolver.spec.ts b/packages/backend/server/src/__tests__/e2e/config/resolver.spec.ts index 2b8f52ede..ef80b8db2 100644 --- a/packages/backend/server/src/__tests__/e2e/config/resolver.spec.ts +++ b/packages/backend/server/src/__tests__/e2e/config/resolver.spec.ts @@ -4,9 +4,20 @@ import { app, e2e } from '../test'; e2e('should indexer feature enabled by default', async t => { const { serverConfig } = await app.gql({ query: serverConfigQuery }); + t.is( serverConfig.features.includes(ServerFeature.Indexer), true, JSON.stringify(serverConfig, null, 2) ); }); + +e2e('should comment feature enabled by default', async t => { + const { serverConfig } = await app.gql({ query: serverConfigQuery }); + + t.is( + serverConfig.features.includes(ServerFeature.Comment), + true, + JSON.stringify(serverConfig, null, 2) + ); +}); diff --git a/packages/backend/server/src/core/comment/index.ts b/packages/backend/server/src/core/comment/index.ts index ce2671dc2..d342d274d 100644 --- a/packages/backend/server/src/core/comment/index.ts +++ b/packages/backend/server/src/core/comment/index.ts @@ -1,12 +1,13 @@ import { Module } from '@nestjs/common'; +import { ServerConfigModule } from '../config'; import { PermissionModule } from '../permission'; import { StorageModule } from '../storage'; import { CommentResolver } from './resolver'; import { CommentService } from './service'; @Module({ - imports: [PermissionModule, StorageModule], + imports: [PermissionModule, StorageModule, ServerConfigModule], providers: [CommentResolver, CommentService], exports: [CommentService], }) diff --git a/packages/backend/server/src/core/comment/resolver.ts b/packages/backend/server/src/core/comment/resolver.ts index a36749acf..e65e8b0cf 100644 --- a/packages/backend/server/src/core/comment/resolver.ts +++ b/packages/backend/server/src/core/comment/resolver.ts @@ -24,6 +24,7 @@ import { } from '../../base/graphql'; import { Comment, DocMode, Models, Reply } from '../../models'; import { CurrentUser } from '../auth/session'; +import { ServerFeature, ServerService } from '../config'; import { AccessController, DocAction } from '../permission'; import { CommentAttachmentStorage } from '../storage'; import { UserType } from '../user'; @@ -54,8 +55,12 @@ export class CommentResolver { private readonly ac: AccessController, private readonly commentAttachmentStorage: CommentAttachmentStorage, private readonly queue: JobQueue, - private readonly models: Models - ) {} + private readonly models: Models, + private readonly server: ServerService + ) { + // enable comment feature by default + this.server.enableFeature(ServerFeature.Comment); + } @Mutation(() => CommentObjectType) async createComment( diff --git a/packages/backend/server/src/core/config/types.ts b/packages/backend/server/src/core/config/types.ts index 120d39caa..72630b315 100644 --- a/packages/backend/server/src/core/config/types.ts +++ b/packages/backend/server/src/core/config/types.ts @@ -9,6 +9,7 @@ export enum ServerFeature { Payment = 'payment', OAuth = 'oauth', Indexer = 'indexer', + Comment = 'comment', } registerEnumType(ServerFeature, { diff --git a/packages/backend/server/src/schema.gql b/packages/backend/server/src/schema.gql index 8736a4d50..36f0a5cc5 100644 --- a/packages/backend/server/src/schema.gql +++ b/packages/backend/server/src/schema.gql @@ -1774,6 +1774,7 @@ enum ServerDeploymentType { enum ServerFeature { Captcha + Comment Copilot CopilotEmbedding Indexer diff --git a/packages/common/graphql/src/schema.ts b/packages/common/graphql/src/schema.ts index 2e0157eb8..bec90e146 100644 --- a/packages/common/graphql/src/schema.ts +++ b/packages/common/graphql/src/schema.ts @@ -2345,6 +2345,7 @@ export enum ServerDeploymentType { export enum ServerFeature { Captcha = 'Captcha', + Comment = 'Comment', Copilot = 'Copilot', CopilotEmbedding = 'CopilotEmbedding', Indexer = 'Indexer',