from contextlib import asynccontextmanager from pathlib import Path from fastapi import FastAPI from fastapi.staticfiles import StaticFiles from app.api.routes import pages, status from app.config import get_settings def ensure_runtime_dirs() -> None: settings = get_settings() if settings.sqlite_path is not None: settings.sqlite_path.parent.mkdir(parents=True, exist_ok=True) @asynccontextmanager async def lifespan(_: FastAPI): ensure_runtime_dirs() yield def create_app() -> FastAPI: settings = get_settings() app = FastAPI( title=settings.app_name, debug=settings.app_debug, version="0.1.0", lifespan=lifespan, description=( "Python rewrite skeleton for the home automation backend. " "This stage provides only the foundation for future module migration." ), ) static_dir = Path(__file__).parent / "static" app.mount("/static", StaticFiles(directory=static_dir), name="static") app.include_router(status.router) app.include_router(pages.router) return app app = create_app()