From 6d5d77d87469313e4d9f6ed73edb1863a5c47891 Mon Sep 17 00:00:00 2001 From: sauravniraula Date: Sat, 12 Jul 2025 00:15:27 +0545 Subject: [PATCH 1/2] feat(fastapi): adds support for custom database postgresql and mysql --- Dockerfile | 5 ++++- Dockerfile.dev | 5 ++++- docker-compose.yml | 6 +++++- servers/fastapi/api/services/database.py | 6 ++++-- servers/fastapi/requirements.txt | 2 ++ 5 files changed, 19 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3f2af16f..9430fb58 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,10 @@ RUN apt-get update && apt-get install -y \ npm \ nginx \ curl \ - redis-server + redis-server \ + default-libmysqlclient-dev \ + build-essential \ + pkg-config # Create a working directory WORKDIR /app diff --git a/Dockerfile.dev b/Dockerfile.dev index 664eb16a..1659ad9b 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -6,7 +6,10 @@ RUN apt-get update && apt-get install -y \ npm \ nginx \ curl \ - redis-server + redis-server \ + default-libmysqlclient-dev \ + build-essential \ + pkg-config # Change working directory WORKDIR /app diff --git a/docker-compose.yml b/docker-compose.yml index fd92fa8b..871db042 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -20,6 +20,7 @@ services: - CUSTOM_LLM_API_KEY=${CUSTOM_LLM_API_KEY} - CUSTOM_MODEL=${CUSTOM_MODEL} - PEXELS_API_KEY=${PEXELS_API_KEY} + - SQL_URL=${SQL_URL} production-gpu: # image: ghcr.io/presenton/presenton:latest @@ -49,6 +50,7 @@ services: - CUSTOM_LLM_API_KEY=${CUSTOM_LLM_API_KEY} - CUSTOM_MODEL=${CUSTOM_MODEL} - PEXELS_API_KEY=${PEXELS_API_KEY} + - SQL_URL=${SQL_URL} development: build: @@ -72,6 +74,7 @@ services: - CUSTOM_LLM_API_KEY=${CUSTOM_LLM_API_KEY} - CUSTOM_MODEL=${CUSTOM_MODEL} - PEXELS_API_KEY=${PEXELS_API_KEY} + - SQL_URL=${SQL_URL} development-gpu: build: @@ -101,4 +104,5 @@ services: - CUSTOM_LLM_URL=${CUSTOM_LLM_URL} - CUSTOM_LLM_API_KEY=${CUSTOM_LLM_API_KEY} - CUSTOM_MODEL=${CUSTOM_MODEL} - - PEXELS_API_KEY=${PEXELS_API_KEY} \ No newline at end of file + - PEXELS_API_KEY=${PEXELS_API_KEY} + - SQL_URL=${SQL_URL} \ No newline at end of file diff --git a/servers/fastapi/api/services/database.py b/servers/fastapi/api/services/database.py index 114610cd..46d9431d 100644 --- a/servers/fastapi/api/services/database.py +++ b/servers/fastapi/api/services/database.py @@ -4,8 +4,10 @@ from sqlalchemy import create_engine from sqlmodel import Session -sql_url = "sqlite:///" + os.path.join(os.getenv("APP_DATA_DIRECTORY"), "fastapi.db") -sql_engine = create_engine(sql_url, connect_args={"check_same_thread": False}) +sql_url = os.getenv("SQL_URL") or "sqlite:///" + os.path.join( + os.getenv("APP_DATA_DIRECTORY"), "fastapi.db" +) +sql_engine = create_engine(sql_url) @contextmanager diff --git a/servers/fastapi/requirements.txt b/servers/fastapi/requirements.txt index c78d19e0..7b92550b 100644 --- a/servers/fastapi/requirements.txt +++ b/servers/fastapi/requirements.txt @@ -55,6 +55,7 @@ mmh3==5.1.0 mpmath==1.3.0 multidict==6.4.3 mypy_extensions==1.1.0 +mysqlclient==2.2.7 numpy==2.2.5 ollama==0.5.1 onnxruntime==1.22.0 @@ -67,6 +68,7 @@ pillow==11.3.0 propcache==0.3.1 proto-plus==1.26.1 protobuf==6.31.1 +psycopg2-binary==2.9.10 py_rust_stemmers==0.1.5 pyasn1==0.6.1 pyasn1_modules==0.4.2 From 037defa6e5ac5ba4458c72819af84669d86ed7f0 Mon Sep 17 00:00:00 2001 From: sauravniraula Date: Sat, 12 Jul 2025 00:21:04 +0545 Subject: [PATCH 2/2] fix(fastapi): removes check same thead for psql and mysql --- servers/fastapi/api/services/database.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/servers/fastapi/api/services/database.py b/servers/fastapi/api/services/database.py index 46d9431d..ea9f3cd1 100644 --- a/servers/fastapi/api/services/database.py +++ b/servers/fastapi/api/services/database.py @@ -7,7 +7,11 @@ from sqlmodel import Session sql_url = os.getenv("SQL_URL") or "sqlite:///" + os.path.join( os.getenv("APP_DATA_DIRECTORY"), "fastapi.db" ) -sql_engine = create_engine(sql_url) +connect_args = {} +if "sqlite" in sql_url: + connect_args["check_same_thread"] = False + +sql_engine = create_engine(sql_url, connect_args=connect_args) @contextmanager