Spaces:
Running
Running
| from sqlmodel import SQLModel, create_engine, Session | |
| from typing import Generator | |
| from .config import settings | |
| # Supabase uses PostgreSQL under the hood. | |
| # We disable the connection pool check for better compatibility with Supabase's | |
| # pooler (PgBouncer) by adding the ?prepared_statements=false arg. | |
| connect_args = {} | |
| engine = create_engine( | |
| settings.DATABASE_URL, | |
| echo=settings.DEBUG, | |
| connect_args=connect_args, | |
| pool_size=20, # Mantém 20 conexões fixas abertas prontas para uso | |
| max_overflow=10, # Permite abrir +10 conexões extras em picos de tráfego | |
| pool_pre_ping=True, # Testa se a conexão caiu antes de usá-la (evita erros) | |
| pool_recycle=1800 # Recicla as conexões a cada 30 minutos | |
| ) | |
| def create_db_and_tables() -> None: | |
| """Create all SQLModel tables. Called on app startup.""" | |
| SQLModel.metadata.create_all(engine) | |
| def get_session() -> Generator[Session, None, None]: | |
| """FastAPI dependency that yields a DB session per request.""" | |
| with Session(engine) as session: | |
| yield session | |