From caea6c58d97b5bfb515b9f00817b05a09f40a409 Mon Sep 17 00:00:00 2001 From: Motoko Date: Mon, 30 Mar 2026 15:49:22 +0000 Subject: [PATCH] Fix: Use absolute path /app/data for SQLite in Docker --- app/database.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/app/database.py b/app/database.py index eed06ec..acaed11 100644 --- a/app/database.py +++ b/app/database.py @@ -21,13 +21,25 @@ class Base(DeclarativeBase): pass -# Async session factory -async_engine = create_async_engine(DATABASE_URL, echo=False) +# Create data directory at module load time (before any engine connection) +DATA_DIR = Path("/app/data") +DATA_DIR.mkdir(parents=True, exist_ok=True) + +# Async session factory - URL uses absolute path to /app/data +async_engine = create_async_engine( + f"sqlite+aiosqlite:///{DATA_DIR}/claudia_docs.db", + echo=False, + connect_args={"check_same_thread": False} +) AsyncSessionLocal = async_sessionmaker(async_engine, class_=AsyncSession, expire_on_commit=False) # Sync engine for migrations -sync_engine = create_engine(SYNC_DATABASE_URL, echo=False) +sync_engine = create_engine( + f"sqlite:///{DATA_DIR}/claudia_docs.db", + echo=False, + connect_args={"check_same_thread": False} +) SyncSessionLocal = sessionmaker(sync_engine) @@ -51,8 +63,7 @@ async def get_db_simple(): async def init_db(): """Initialize database with all tables, views, FTS5, and triggers.""" - # Create data directory - Path("./data").mkdir(exist_ok=True) + # Data directory already created at module load time async with async_engine.begin() as conn: # Create all tables via SQL (not ORM) to handle SQLite-specific features