Injeção de dependência
O FastAPI tem um excelente sistema de injeção de dependêcias, isto é util por exemplo para quando quisermos que um endpoint seja acessivel apenas por usuários administradores, ao invés de colocarmos lógica para verificar o nivel de permissão do usuário diretamente em cada view, podemos criar uma dependência.
Outro exemplo (que vamos aplicar agora) é precisarmos garantir que cada endpoint, ao ter sua função view invocada, uma sessão de conexão com o banco de dados já esteja disponível.
Vamos criar uma dependência chamada ActiveSession
que posteriormente será usada
na definição das views.
No topo de dundie/db.py
nas linhas 2 e 3
from fastapi import Depends
from sqlmodel import Session, create_engine
No final de dundie/db.py
após a linha 13
def get_session():
with Session(engine) as session:
yield session
ActiveSession = Depends(get_session)
O objeto que ActiveSession
é uma dependência para rotas do FastAPI
quando usarmos este objeto como parâmetro de uma view o FastAPI
vai executar de forma lazy este objeto e passar o retorno da função
atrelada a ele como argumento da nossa view.
Neste caso teremos sempre uma conexão com o banco de dados dentro de cada
view que marcarmos com session: Session = ActiveSession
.
Veremos a seguir como usar esta dependência -->