"""FastAPI dependency injection.""" from __future__ import annotations from fastapi import Depends, Request, HTTPException from visual_notebook.session import Session, SessionStore def get_session_store(request: Request) -> SessionStore: return request.app.state.session_store def get_duckdb_con(request: Request): return request.app.state.duckdb_con def get_session( request: Request, store: SessionStore = Depends(get_session_store), con=Depends(get_duckdb_con), ) -> Session: session_id = request.cookies.get("session_id") session = store.get_or_create(session_id, con) return session def get_current_ref(session: Session = Depends(get_session)): if session.current_ref is None: raise HTTPException(status_code=400, detail="No dataset loaded. Upload a CSV first.") return session.current_ref def get_history(session: Session = Depends(get_session)): return session.history