From 1406c95fea13e124f0802b245cc9911c81792f88 Mon Sep 17 00:00:00 2001 From: Dennis Thiessen Date: Thu, 12 Feb 2026 22:11:41 +0100 Subject: [PATCH] changed db engine to mysql --- .gitea/workflows/workflow.yml | 4 ++-- backend/.env.example | 4 ++-- backend/app/config.py | 2 +- backend/app/database.py | 8 ++++++-- backend/requirements.txt | 2 +- deploy/setup.sh | 17 ++++++++--------- 6 files changed, 20 insertions(+), 17 deletions(-) diff --git a/.gitea/workflows/workflow.yml b/.gitea/workflows/workflow.yml index d775e9c..b4a692d 100644 --- a/.gitea/workflows/workflow.yml +++ b/.gitea/workflows/workflow.yml @@ -79,8 +79,8 @@ jobs: pip install --quiet -r requirements.txt # Restart service - sudo systemctl restart fluentgerman - echo "✓ FluentGerman.ai deployed and restarted" + #sudo systemctl restart fluentgerman + echo "✓ FluentGerman.ai deployed" REMOTE_SCRIPT # Cleanup diff --git a/backend/.env.example b/backend/.env.example index f28a254..bad9067 100644 --- a/backend/.env.example +++ b/backend/.env.example @@ -8,8 +8,8 @@ APP_PORT=8999 SECRET_KEY=generate-a-strong-random-key-here ACCESS_TOKEN_EXPIRE_MINUTES=1440 -# Database (PostgreSQL) -DATABASE_URL=postgresql+asyncpg://fluentgerman:YOUR_PASSWORD@localhost:5432/fluentgerman +# Database (MySQL) +DATABASE_URL=mysql+aiomysql://fluentgerman:YOUR_PASSWORD@localhost:3306/fluentgerman # LLM Provider (via LiteLLM — supports openai, anthropic, gemini, etc.) # For Gemini: set LLM_PROVIDER=gemini, LLM_MODEL=gemini-2.0-flash (auto-prefixed) diff --git a/backend/app/config.py b/backend/app/config.py index 181e595..42c88d2 100644 --- a/backend/app/config.py +++ b/backend/app/config.py @@ -19,7 +19,7 @@ class Settings(BaseSettings): algorithm: str = "HS256" # Database - database_url: str = "postgresql+asyncpg://fluentgerman:fluentgerman@localhost:5432/fluentgerman" + database_url: str = "mysql+aiomysql://fluentgerman:fluentgerman@localhost:3306/fluentgerman" # LLM llm_provider: str = "openai" # used by litellm routing diff --git a/backend/app/database.py b/backend/app/database.py index 2d56137..cff6ad5 100644 --- a/backend/app/database.py +++ b/backend/app/database.py @@ -1,4 +1,4 @@ -"""FluentGerman.ai — Database setup (async PostgreSQL).""" +"""FluentGerman.ai — Database setup (async MySQL).""" from collections.abc import AsyncGenerator @@ -7,7 +7,11 @@ from sqlalchemy.orm import DeclarativeBase from app.config import get_settings -engine = create_async_engine(get_settings().database_url, echo=get_settings().debug) +engine = create_async_engine( + get_settings().database_url, + echo=get_settings().debug, + pool_recycle=3600, # Reconnect before MySQL's wait_timeout (default 8h) +) async_session = async_sessionmaker(engine, class_=AsyncSession, expire_on_commit=False) diff --git a/backend/requirements.txt b/backend/requirements.txt index 6504e95..fcef8a2 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -2,7 +2,7 @@ fastapi[standard]>=0.115.0 uvicorn[standard]>=0.32.0 sqlalchemy[asyncio]>=2.0.0 -asyncpg>=0.30.0 +aiomysql>=0.2.0 pydantic[email]>=2.0.0 pydantic-settings>=2.0.0 python-jose[cryptography]>=3.3.0 diff --git a/deploy/setup.sh b/deploy/setup.sh index d37d32d..b28654c 100644 --- a/deploy/setup.sh +++ b/deploy/setup.sh @@ -23,14 +23,13 @@ apt-get update -qq apt-get install -y -qq python3 python3-venv python3-pip > /dev/null echo "✓ Python installed" -# 3. PostgreSQL database setup -sudo -u postgres psql -tc "SELECT 1 FROM pg_roles WHERE rolname='$DB_USER'" | grep -q 1 || \ - sudo -u postgres psql -c "CREATE USER $DB_USER WITH PASSWORD 'CHANGE_ME';" - -sudo -u postgres psql -tc "SELECT 1 FROM pg_database WHERE datname='$DB_NAME'" | grep -q 1 || \ - sudo -u postgres psql -c "CREATE DATABASE $DB_NAME OWNER $DB_USER;" - -echo "✓ PostgreSQL database ready" +# 3. MySQL database setup +echo "Setting up MySQL database..." +mysql -u root -e "CREATE DATABASE IF NOT EXISTS $DB_NAME CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" +mysql -u root -e "CREATE USER IF NOT EXISTS '$DB_USER'@'localhost' IDENTIFIED BY 'CHANGE_ME';" +mysql -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost';" +mysql -u root -e "FLUSH PRIVILEGES;" +echo "✓ MySQL database ready" # 4. Application directory mkdir -p "$APP_DIR" @@ -64,7 +63,7 @@ systemctl start "$APP_NAME" echo "✓ Systemd service active" # 8. Nginx config -cp deploy/nginx.conf /etc/nginx/sites-available/$APP_NAME +cp deploy/nginx.conf.example /etc/nginx/sites-available/$APP_NAME ln -sf /etc/nginx/sites-available/$APP_NAME /etc/nginx/sites-enabled/ nginx -t && systemctl reload nginx echo "✓ Nginx configured"