"""Async SQLAlchemy pripojenie a inicializacia schemy. Connection string z env DATABASE_URL. Default je lokalny SQLite subor (dev); v produkcii staci nastavit DATABASE_URL na PostgreSQL (asyncpg), kod sa nemeni. """ import os from sqlalchemy.ext.asyncio import ( AsyncSession, async_sessionmaker, create_async_engine, ) from sqlalchemy.orm import DeclarativeBase DATABASE_URL = os.environ.get("DATABASE_URL", "sqlite+aiosqlite:///bridzik.db") class Base(DeclarativeBase): pass engine = create_async_engine(DATABASE_URL, echo=False) async_session: async_sessionmaker[AsyncSession] = async_sessionmaker( engine, expire_on_commit=False ) async def init_db() -> None: """Vytvori tabulky, ak este neexistuju. Vola sa pri starte servera.""" # Import modelov registruje tabulky na Base.metadata. from db import models # noqa: F401 async with engine.begin() as conn: await conn.run_sync(Base.metadata.create_all)