diff --git a/packages/components/nodes/vectorstores/Postgres/Postgres.ts b/packages/components/nodes/vectorstores/Postgres/Postgres.ts index b5827dc3f45..fd38cc09742 100644 --- a/packages/components/nodes/vectorstores/Postgres/Postgres.ts +++ b/packages/components/nodes/vectorstores/Postgres/Postgres.ts @@ -191,6 +191,18 @@ class Postgres_VectorStores implements INode { return await similaritySearchVectorWithScore(query, k, tableName, postgresConnectionOptions, filter) } + vectorStore.delete = async (params: { ids: string[] }): Promise => { + const { ids } = params + + if (ids?.length) { + try { + vectorStore.appDataSource.getRepository(vectorStore.documentEntity).delete(ids) + } catch (e) { + console.error('Failed to delete') + } + } + } + await recordManager.createSchema() const res = await index({ diff --git a/packages/server/src/services/documentstore/index.ts b/packages/server/src/services/documentstore/index.ts index 08e63885de0..53b3cefb263 100644 --- a/packages/server/src/services/documentstore/index.ts +++ b/packages/server/src/services/documentstore/index.ts @@ -597,11 +597,8 @@ const processAndSaveChunks = async (data: IDocumentStoreLoaderForPreview) => { const newLoaderId = data.id ?? uuidv4() const found = existingLoaders.find((ldr: IDocumentStoreLoader) => ldr.id === newLoaderId) if (found) { - // clean up the current status and mark the loader as pending_sync - found.totalChunks = 0 - found.totalChars = 0 - found.status = DocumentStoreStatus.SYNCING - entity.loaders = JSON.stringify(existingLoaders) + const foundIndex = existingLoaders.findIndex((ldr: IDocumentStoreLoader) => ldr.id === newLoaderId) + if (!data.loaderId) data.loaderId = found.loaderId if (!data.loaderName) data.loaderName = found.loaderName if (!data.loaderConfig) data.loaderConfig = found.loaderConfig @@ -611,6 +608,25 @@ const processAndSaveChunks = async (data: IDocumentStoreLoaderForPreview) => { if (found.credential) { data.credential = found.credential } + + let loader: IDocumentStoreLoader = { + ...found, + loaderId: data.loaderId, + loaderName: data.loaderName, + loaderConfig: data.loaderConfig, + splitterId: data.splitterId, + splitterName: data.splitterName, + splitterConfig: data.splitterConfig, + totalChunks: 0, + totalChars: 0, + status: DocumentStoreStatus.SYNCING + } + if (data.credential) { + loader.credential = data.credential + } + + existingLoaders[foundIndex] = loader + entity.loaders = JSON.stringify(existingLoaders) } else { let loader: IDocumentStoreLoader = { id: newLoaderId,