diff --git a/backend/apps/web/internal/db.py b/backend/apps/web/internal/db.py index 3d639f3c..1f8c3bf7 100644 --- a/backend/apps/web/internal/db.py +++ b/backend/apps/web/internal/db.py @@ -1,4 +1,6 @@ from peewee import * +from config import DATA_DIR -DB = SqliteDatabase("./data/ollama.db") + +DB = SqliteDatabase(f"{DATA_DIR}/ollama.db") DB.connect() diff --git a/backend/apps/web/routers/utils.py b/backend/apps/web/routers/utils.py index b2ca409a..9adf2801 100644 --- a/backend/apps/web/routers/utils.py +++ b/backend/apps/web/routers/utils.py @@ -11,7 +11,7 @@ import json from utils.misc import calculate_sha256 -from config import OLLAMA_API_BASE_URL +from config import OLLAMA_API_BASE_URL, DATA_DIR, UPLOAD_DIR from constants import ERROR_MESSAGES @@ -96,8 +96,7 @@ async def download( file_name = parse_huggingface_url(url) if file_name: - os.makedirs("./uploads", exist_ok=True) - file_path = os.path.join("./uploads", f"{file_name}") + file_path = f"{UPLOAD_DIR}/{file_name}" return StreamingResponse( download_file_stream(url, file_path, file_name), @@ -109,8 +108,7 @@ async def download( @router.post("/upload") def upload(file: UploadFile = File(...)): - os.makedirs("./data/uploads", exist_ok=True) - file_path = os.path.join("./data/uploads", file.filename) + file_path = f"{UPLOAD_DIR}/{file.filename}" # Save file in chunks with open(file_path, "wb+") as f: diff --git a/backend/config.py b/backend/config.py index 8f37eb41..05733f88 100644 --- a/backend/config.py +++ b/backend/config.py @@ -1,29 +1,17 @@ -from dotenv import load_dotenv, find_dotenv import os - - import chromadb from chromadb import Settings - - from secrets import token_bytes from base64 import b64encode - from constants import ERROR_MESSAGES - - from pathlib import Path -load_dotenv(find_dotenv("../.env")) +try: + from dotenv import load_dotenv, find_dotenv - -#################################### -# File Upload -#################################### - - -UPLOAD_DIR = "./data/uploads" -Path(UPLOAD_DIR).mkdir(parents=True, exist_ok=True) + load_dotenv(find_dotenv("../.env")) +except ImportError: + print("dotenv not installed, skipping...") #################################### @@ -32,6 +20,21 @@ Path(UPLOAD_DIR).mkdir(parents=True, exist_ok=True) ENV = os.environ.get("ENV", "dev") + +#################################### +# DATA/FRONTEND BUILD DIR +#################################### + +DATA_DIR = str(Path(os.getenv("DATA_DIR", "./data")).resolve()) +FRONTEND_BUILD_DIR = str(Path(os.getenv("FRONTEND_BUILD_DIR", "../build"))) + +#################################### +# File Upload DIR +#################################### + +UPLOAD_DIR = f"{DATA_DIR}/uploads" +Path(UPLOAD_DIR).mkdir(parents=True, exist_ok=True) + #################################### # OLLAMA_API_BASE_URL #################################### @@ -107,7 +110,7 @@ if WEBUI_AUTH and WEBUI_JWT_SECRET_KEY == "": # RAG #################################### -CHROMA_DATA_PATH = "./data/vector_db" +CHROMA_DATA_PATH = f"{DATA_DIR}/vector_db" EMBED_MODEL = "all-MiniLM-L6-v2" CHROMA_CLIENT = chromadb.PersistentClient( path=CHROMA_DATA_PATH, settings=Settings(allow_reset=True) diff --git a/backend/main.py b/backend/main.py index e4d4bdb5..f7a82b66 100644 --- a/backend/main.py +++ b/backend/main.py @@ -14,7 +14,7 @@ from apps.openai.main import app as openai_app from apps.web.main import app as webui_app from apps.rag.main import app as rag_app -from config import ENV +from config import ENV, FRONTEND_BUILD_DIR class SPAStaticFiles(StaticFiles): @@ -58,4 +58,8 @@ app.mount("/openai/api", openai_app) app.mount("/rag/api/v1", rag_app) -app.mount("/", SPAStaticFiles(directory="../build", html=True), name="spa-static-files") +app.mount( + "/", + SPAStaticFiles(directory=FRONTEND_BUILD_DIR, html=True), + name="spa-static-files", +)