3d3c2bcc57
Collapse the three data layers into one. app/db.py now exposes a single Base, a cached engine bound to app_database_url with SQLite WAL enabled, and get_engine/get_session_local/reset_db_caches/get_db_session. Delete app/auth_db.py, app/poo_db.py and app/models/base.py. All models (auth, config, public_ip, location, poo) inherit the one Base and register on a single metadata. Dependencies converge to a single get_db; all routes use it. Also update the alembic env.py files (app/location/poo) and tests that imported the removed modules so the suite stays green, and drop the obsolete test_legacy_style_location_db test whose flow (app reading a separate location DB) no longer exists. Location/poo Alembic chains, adopt scripts and adoption tests remain for M1-T04; config fields remain for M1-T05. pytest 109 passed; ruff clean (pre-existing only); WAL verified; single Base.metadata holds all seven tables.
37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
from collections.abc import Generator
|
|
|
|
from fastapi import Depends, Request
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.config import Settings, get_settings
|
|
from app.db import get_db_session
|
|
from app.integrations.homeassistant import HomeAssistantClient
|
|
from app.integrations.ticktick import TickTickClient
|
|
from app.services.auth import AuthenticatedSession, get_authenticated_session
|
|
from app.services.config_page import build_runtime_settings
|
|
|
|
|
|
def get_db() -> Generator[Session, None, None]:
|
|
yield from get_db_session()
|
|
|
|
|
|
def get_app_settings(session: Session = Depends(get_db)) -> Settings:
|
|
return build_runtime_settings(session, get_settings())
|
|
|
|
|
|
def get_homeassistant_client(settings: Settings = Depends(get_app_settings)) -> HomeAssistantClient:
|
|
return HomeAssistantClient(settings)
|
|
|
|
|
|
def get_ticktick_client(settings: Settings = Depends(get_app_settings)) -> TickTickClient:
|
|
return TickTickClient(settings)
|
|
|
|
|
|
def get_current_auth_session(
|
|
request: Request,
|
|
session: Session = Depends(get_db),
|
|
settings: Settings = Depends(get_app_settings),
|
|
) -> AuthenticatedSession | None:
|
|
raw_token = request.cookies.get(settings.auth_session_cookie_name)
|
|
return get_authenticated_session(session, raw_token=raw_token)
|