From aa5d1417a1bc9163136f6ae5ac806ad29787907e Mon Sep 17 00:00:00 2001 From: vinodkiran Date: Wed, 31 Jan 2024 19:16:58 -0500 Subject: [PATCH] Multimodal: deleting uploads on delete of all chatmessages --- packages/server/src/index.ts | 7 ++++++- packages/server/src/utils/index.ts | 22 ++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/packages/server/src/index.ts b/packages/server/src/index.ts index 361c00cf..b7ddac51 100644 --- a/packages/server/src/index.ts +++ b/packages/server/src/index.ts @@ -46,7 +46,8 @@ import { getSessionChatHistory, getAllConnectedNodes, clearSessionMemory, - findMemoryNode + findMemoryNode, + deleteFolderRecursive } from './utils' import { cloneDeep, omit, uniqWith, isEqual } from 'lodash' import { getDataSource } from './DataSource' @@ -618,6 +619,10 @@ export class App { if (sessionId) deleteOptions.sessionId = sessionId if (chatType) deleteOptions.chatType = chatType + /* Delete all multimodal uploads corresponding to this chatflow */ + const directory = path.join(getUserHome(), '.flowise', 'gptvision', chatflowid) + deleteFolderRecursive(directory) + const results = await this.AppDataSource.getRepository(ChatMessage).delete(deleteOptions) return res.json(results) }) diff --git a/packages/server/src/utils/index.ts b/packages/server/src/utils/index.ts index 3ed00785..eb4e1936 100644 --- a/packages/server/src/utils/index.ts +++ b/packages/server/src/utils/index.ts @@ -1078,3 +1078,25 @@ export const getAllValuesFromJson = (obj: any): any[] => { extractValues(obj) return values } + +export const deleteFolderRecursive = (directory: string) => { + fs.readdir(directory, (error, files) => { + if (error) throw new Error('Could not read directory') + + files.forEach((file) => { + const file_path = path.join(directory, file) + + fs.stat(file_path, (error, stat) => { + if (error) throw new Error('File do not exist') + + if (!stat.isDirectory()) { + fs.unlink(file_path, (error) => { + if (error) throw new Error('Could not delete file') + }) + } else { + deleteFolderRecursive(file_path) + } + }) + }) + }) +} \ No newline at end of file