""" Database Configuration fuer Classroom Engine. Stellt PostgreSQL-Anbindung fuer Session-Persistenz bereit. Sessions ueberleben Server-Neustarts (Feature f22). """ import os from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker # Database URL from environment (nutzt gleiche DB wie Backend) # Korrigiert postgres:// zu postgresql:// fuer SQLAlchemy 2.0 Kompatibilitaet _raw_url = os.getenv( "DATABASE_URL", "postgresql://breakpilot:breakpilot123@localhost:5432/breakpilot" ) # SQLAlchemy 2.0 erfordert "postgresql://" statt "postgres://" DATABASE_URL = _raw_url.replace("postgres://", "postgresql://", 1) if _raw_url.startswith("postgres://") else _raw_url # Engine configuration engine = create_engine( DATABASE_URL, pool_pre_ping=True, pool_size=5, max_overflow=10, echo=os.getenv("SQL_ECHO", "false").lower() == "true" ) # Declarative Base Base = declarative_base() # Session factory SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) def get_db(): """Database dependency for FastAPI endpoints.""" db = SessionLocal() try: yield db finally: db.close() def init_db(): """Erstellt alle Tabellen (fuer Entwicklung).""" from . import db_models # Import models to register them Base.metadata.create_all(bind=engine)