diff --git a/apps/server/src/core/workspace/services/workspace.service.ts b/apps/server/src/core/workspace/services/workspace.service.ts index 3ede6ec8..ae7f556b 100644 --- a/apps/server/src/core/workspace/services/workspace.service.ts +++ b/apps/server/src/core/workspace/services/workspace.service.ts @@ -50,6 +50,7 @@ export class WorkspaceService { @InjectKysely() private readonly db: KyselyDB, @InjectQueue(QueueName.ATTACHMENT_QUEUE) private attachmentQueue: Queue, @InjectQueue(QueueName.BILLING_QUEUE) private billingQueue: Queue, + @InjectQueue(QueueName.AI_QUEUE) private aiQueue: Queue, ) {} async findById(workspaceId: string) { @@ -315,22 +316,36 @@ export class WorkspaceService { if (typeof updateWorkspaceDto.aiSearch !== 'undefined') { await this.workspaceRepo.updateAiSettings( workspaceId, - 'aiSearch', + 'search', updateWorkspaceDto.aiSearch, ); - // to enable this - // we need to check if pgvector and embeddings table exists + if (updateWorkspaceDto.aiSearch) { + await this.aiQueue.add(QueueJob.WORKSPACE_CREATE_EMBEDDINGS, { + workspaceId, + }); + } else { + // Schedule deletion after 24 hours + const deleteJobId = `ai-search-disabled-${workspaceId}`; + await this.aiQueue.add( + QueueJob.WORKSPACE_DELETE_EMBEDDINGS, + { workspaceId }, + { + jobId: deleteJobId, + delay: 24 * 60 * 60 * 1000, + removeOnComplete: true, + removeOnFail: true, + }, + ); + } delete updateWorkspaceDto.aiSearch; - // if true, send to ai queue - // if false, send to delete embeddings } if (typeof updateWorkspaceDto.generativeAi !== 'undefined') { await this.workspaceRepo.updateAiSettings( workspaceId, - 'generativeAi', + 'generative', updateWorkspaceDto.generativeAi, ); delete updateWorkspaceDto.generativeAi; diff --git a/apps/server/src/ee b/apps/server/src/ee index f7ff3ff8..4de95306 160000 --- a/apps/server/src/ee +++ b/apps/server/src/ee @@ -1 +1 @@ -Subproject commit f7ff3ff80dc1cc8a13ca121a656d854d379dd019 +Subproject commit 4de95306c7a8d1393f6fa8952c137d52cd28fdfa diff --git a/apps/server/src/integrations/queue/constants/queue.constants.ts b/apps/server/src/integrations/queue/constants/queue.constants.ts index eaac9b9c..5c7aa29a 100644 --- a/apps/server/src/integrations/queue/constants/queue.constants.ts +++ b/apps/server/src/integrations/queue/constants/queue.constants.ts @@ -53,6 +53,7 @@ export enum QueueJob { WORKSPACE_CREATED = 'workspace-created', WORKSPACE_SPACE_UPDATED = 'workspace-updated', WORKSPACE_DELETED = 'workspace-deleted', + WORKSPACE_CREATE_EMBEDDINGS = 'workspace-create-embeddings', WORKSPACE_DELETE_EMBEDDINGS = 'workspace-delete-embeddings', GENERATE_PAGE_EMBEDDINGS = 'generate-page-embeddings',