"""Application container. Built once during startup and read by the routers. Keeping it here avoids importing the FastAPI app from the routers. """ from __future__ import annotations from dataclasses import dataclass from .config import Settings from .services.jobs import JobManager from .services.pipeline import ConversionPipeline from .services.storage import Storage @dataclass class Container: settings: Settings storage: Storage pipeline: ConversionPipeline jobs: JobManager engines: dict _container: Container | None = None def set_container(container: Container) -> None: global _container _container = container def get_container() -> Container: if _container is None: raise RuntimeError("Aplikace jeste nebyla inicializovana.") return _container def get_jobs() -> JobManager: return get_container().jobs def get_settings_dep() -> Settings: return get_container().settings