mirror of
				https://github.com/open-webui/open-webui
				synced 2025-06-26 18:26:48 +00:00 
			
		
		
		
	feat: show error toast if trying to download db on external db
This commit is contained in:
		
							parent
							
								
									e91a49c455
								
							
						
					
					
						commit
						47a33acfeb
					
				@ -1,5 +1,6 @@
 | 
			
		||||
from fastapi import APIRouter, UploadFile, File, Response
 | 
			
		||||
from fastapi import Depends, HTTPException, status
 | 
			
		||||
from peewee import SqliteDatabase
 | 
			
		||||
from starlette.responses import StreamingResponse, FileResponse
 | 
			
		||||
from pydantic import BaseModel
 | 
			
		||||
 | 
			
		||||
@ -7,7 +8,7 @@ from pydantic import BaseModel
 | 
			
		||||
from fpdf import FPDF
 | 
			
		||||
import markdown
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
from apps.web.internal.db import DB
 | 
			
		||||
from utils.utils import get_admin_user
 | 
			
		||||
from utils.misc import calculate_sha256, get_gravatar_url
 | 
			
		||||
 | 
			
		||||
@ -96,8 +97,13 @@ async def download_db(user=Depends(get_admin_user)):
 | 
			
		||||
            status_code=status.HTTP_401_UNAUTHORIZED,
 | 
			
		||||
            detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
 | 
			
		||||
        )
 | 
			
		||||
    if not isinstance(DB, SqliteDatabase):
 | 
			
		||||
        raise HTTPException(
 | 
			
		||||
            status_code=status.HTTP_400_BAD_REQUEST,
 | 
			
		||||
            detail=ERROR_MESSAGES.DB_NOT_SQLITE,
 | 
			
		||||
        )
 | 
			
		||||
    return FileResponse(
 | 
			
		||||
        f"{DATA_DIR}/webui.db",
 | 
			
		||||
        DB.database,
 | 
			
		||||
        media_type="application/octet-stream",
 | 
			
		||||
        filename="webui.db",
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
@ -69,3 +69,5 @@ class ERROR_MESSAGES(str, Enum):
 | 
			
		||||
    CREATE_API_KEY_ERROR = "Oops! Something went wrong while creating your API key. Please try again later. If the issue persists, contact support for assistance."
 | 
			
		||||
 | 
			
		||||
    EMPTY_CONTENT = "The content provided is empty. Please ensure that there is text or data present before proceeding."
 | 
			
		||||
 | 
			
		||||
    DB_NOT_SQLITE = "This feature is only available when running with SQLite databases."
 | 
			
		||||
 | 
			
		||||
@ -83,9 +83,9 @@ export const downloadDatabase = async (token: string) => {
 | 
			
		||||
			Authorization: `Bearer ${token}`
 | 
			
		||||
		}
 | 
			
		||||
	})
 | 
			
		||||
		.then((response) => {
 | 
			
		||||
		.then(async (response) => {
 | 
			
		||||
			if (!response.ok) {
 | 
			
		||||
				throw new Error('Network response was not ok');
 | 
			
		||||
				throw await response.json();
 | 
			
		||||
			}
 | 
			
		||||
			return response.blob();
 | 
			
		||||
		})
 | 
			
		||||
@ -100,7 +100,11 @@ export const downloadDatabase = async (token: string) => {
 | 
			
		||||
		})
 | 
			
		||||
		.catch((err) => {
 | 
			
		||||
			console.log(err);
 | 
			
		||||
			error = err;
 | 
			
		||||
			error = err.detail;
 | 
			
		||||
			return null;
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
	if (error) {
 | 
			
		||||
		throw error;
 | 
			
		||||
	}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -2,6 +2,7 @@
 | 
			
		||||
	import { downloadDatabase } from '$lib/apis/utils';
 | 
			
		||||
	import { onMount, getContext } from 'svelte';
 | 
			
		||||
	import { config } from '$lib/stores';
 | 
			
		||||
	import { toast } from 'svelte-sonner';
 | 
			
		||||
 | 
			
		||||
	const i18n = getContext('i18n');
 | 
			
		||||
 | 
			
		||||
@ -32,7 +33,9 @@
 | 
			
		||||
						on:click={() => {
 | 
			
		||||
							// exportAllUserChats();
 | 
			
		||||
 | 
			
		||||
							downloadDatabase(localStorage.token);
 | 
			
		||||
							downloadDatabase(localStorage.token).catch((error) => {
 | 
			
		||||
								toast.error(error);
 | 
			
		||||
							});
 | 
			
		||||
						}}
 | 
			
		||||
					>
 | 
			
		||||
						<div class=" self-center mr-3">
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user