Spaces:
Running
Running
File size: 1,100 Bytes
29cbab9 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | 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
|