From 6b1e2ad0dcfa85a0883399f3038aac79eaa5aecf Mon Sep 17 00:00:00 2001 From: Pino Date: Wed, 10 Jun 2026 20:42:26 +0200 Subject: [PATCH] =?UTF-8?q?feature/ha-api-integration:=20lifespan=20und=20?= =?UTF-8?q?Settings=20f=C3=BCr=20HA-Reader=20vorbereiten?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/main.py | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/app/main.py b/app/main.py index de0f8ff..6826c1c 100644 --- a/app/main.py +++ b/app/main.py @@ -1,12 +1,46 @@ -from fastapi import FastAPI +from contextlib import asynccontextmanager + +from fastapi import FastAPI, Depends + +from app.api.v1.entities import router as entities_router +from app.ha.client import HaClient, HaClientSettings +from app.ha.reader import HaReader + + +@asynccontextmanager +async def lifespan(app: FastAPI): + settings = HaClientSettings( + url=app.state.settings.ha_url, + token=app.state.settings.ha_token, + ) + client = HaClient(settings=settings) + app.state.ha_reader = HaReader(client=client) + yield + app = FastAPI( title="SillyHome Next API", description="Lokales Smart-Home-Intelligenzsystem für Home Assistant.", version="0.1.0", + lifespan=lifespan, ) +class Settings: + ha_url: str + ha_token: str + + +app.state.settings = Settings() + + +def get_ha_reader() -> HaReader: + return app.state.ha_reader + + +app.include_router(entities_router, dependencies=[Depends(get_ha_reader)]) + + @app.get("/health") def health() -> dict[str, str]: return {"status": "ok"} @@ -14,4 +48,4 @@ def health() -> dict[str, str]: @app.get("/") def root() -> dict[str, str]: - return {"service": "sillyhome-next", "docs": "/docs"} + return {"service": "sillyhome-next", "docs": "/docs"} \ No newline at end of file