From 0495f01acbf7b8b3a1527855f13651fc76aa9784 Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Mon, 3 Jun 2024 21:45:36 -0700 Subject: [PATCH] feat: reset upload dir --- backend/apps/rag/main.py | 24 ++ src/lib/apis/rag/index.ts | 26 ++ .../documents/Settings/General.svelte | 256 +++++++++++++----- 3 files changed, 231 insertions(+), 75 deletions(-) diff --git a/backend/apps/rag/main.py b/backend/apps/rag/main.py index faebe95fb..d405ef0b4 100644 --- a/backend/apps/rag/main.py +++ b/backend/apps/rag/main.py @@ -1164,6 +1164,30 @@ def reset_vector_db(user=Depends(get_admin_user)): CHROMA_CLIENT.reset() +@app.get("/reset/uploads") +def reset_upload_dir(user=Depends(get_admin_user)) -> bool: + folder = f"{UPLOAD_DIR}" + try: + # Check if the directory exists + if os.path.exists(folder): + # Iterate over all the files and directories in the specified directory + for filename in os.listdir(folder): + file_path = os.path.join(folder, filename) + try: + if os.path.isfile(file_path) or os.path.islink(file_path): + os.unlink(file_path) # Remove the file or link + elif os.path.isdir(file_path): + shutil.rmtree(file_path) # Remove the directory + except Exception as e: + print(f"Failed to delete {file_path}. Reason: {e}") + else: + print(f"The directory {folder} does not exist") + except Exception as e: + print(f"Failed to process the directory {folder}. Reason: {e}") + + return True + + @app.get("/reset") def reset(user=Depends(get_admin_user)) -> bool: folder = f"{UPLOAD_DIR}" diff --git a/src/lib/apis/rag/index.ts b/src/lib/apis/rag/index.ts index d12782ad2..ca68827a3 100644 --- a/src/lib/apis/rag/index.ts +++ b/src/lib/apis/rag/index.ts @@ -359,6 +359,32 @@ export const scanDocs = async (token: string) => { return res; }; +export const resetUploadDir = async (token: string) => { + let error = null; + + const res = await fetch(`${RAG_API_BASE_URL}/reset/uploads`, { + method: 'GET', + headers: { + Accept: 'application/json', + authorization: `Bearer ${token}` + } + }) + .then(async (res) => { + if (!res.ok) throw await res.json(); + return res.json(); + }) + .catch((err) => { + error = err.detail; + return null; + }); + + if (error) { + throw error; + } + + return res; +}; + export const resetVectorDB = async (token: string) => { let error = null; diff --git a/src/lib/components/documents/Settings/General.svelte b/src/lib/components/documents/Settings/General.svelte index da648bbec..34d8f5787 100644 --- a/src/lib/components/documents/Settings/General.svelte +++ b/src/lib/components/documents/Settings/General.svelte @@ -8,7 +8,8 @@ getEmbeddingConfig, updateEmbeddingConfig, getRerankingConfig, - updateRerankingConfig + updateRerankingConfig, + resetUploadDir } from '$lib/apis/rag'; import { documents, models } from '$lib/stores'; @@ -24,6 +25,7 @@ let updateRerankingModelLoading = false; let showResetConfirm = false; + let showResetUploadDirConfirm = false; let embeddingEngine = ''; let embeddingModel = ''; @@ -496,99 +498,203 @@ {/if} -
+
- {#if showResetConfirm} -
-
- - - - - {$i18n.t('Are you sure?')} -
- -
- + +
+
+ {:else} + + {/if} + + {#if showResetConfirm} +
+
+ - -
+ +
+ + +
+
+ {:else} + - - - {:else} - - {/if} + +
{$i18n.t('Reset Vector Storage')}
+ + {/if} +