"""Dependency injection for API routes.""" from wled_controller.core.processor_manager import ProcessorManager from wled_controller.storage import DeviceStore from wled_controller.storage.template_store import TemplateStore from wled_controller.storage.postprocessing_template_store import PostprocessingTemplateStore from wled_controller.storage.pattern_template_store import PatternTemplateStore from wled_controller.storage.picture_source_store import PictureSourceStore from wled_controller.storage.picture_target_store import PictureTargetStore # Global instances (initialized in main.py) _device_store: DeviceStore | None = None _template_store: TemplateStore | None = None _pp_template_store: PostprocessingTemplateStore | None = None _pattern_template_store: PatternTemplateStore | None = None _picture_source_store: PictureSourceStore | None = None _picture_target_store: PictureTargetStore | None = None _processor_manager: ProcessorManager | None = None def get_device_store() -> DeviceStore: """Get device store dependency.""" if _device_store is None: raise RuntimeError("Device store not initialized") return _device_store def get_template_store() -> TemplateStore: """Get template store dependency.""" if _template_store is None: raise RuntimeError("Template store not initialized") return _template_store def get_pp_template_store() -> PostprocessingTemplateStore: """Get postprocessing template store dependency.""" if _pp_template_store is None: raise RuntimeError("Postprocessing template store not initialized") return _pp_template_store def get_pattern_template_store() -> PatternTemplateStore: """Get pattern template store dependency.""" if _pattern_template_store is None: raise RuntimeError("Pattern template store not initialized") return _pattern_template_store def get_picture_source_store() -> PictureSourceStore: """Get picture source store dependency.""" if _picture_source_store is None: raise RuntimeError("Picture source store not initialized") return _picture_source_store def get_picture_target_store() -> PictureTargetStore: """Get picture target store dependency.""" if _picture_target_store is None: raise RuntimeError("Picture target store not initialized") return _picture_target_store def get_processor_manager() -> ProcessorManager: """Get processor manager dependency.""" if _processor_manager is None: raise RuntimeError("Processor manager not initialized") return _processor_manager def init_dependencies( device_store: DeviceStore, template_store: TemplateStore, processor_manager: ProcessorManager, pp_template_store: PostprocessingTemplateStore | None = None, pattern_template_store: PatternTemplateStore | None = None, picture_source_store: PictureSourceStore | None = None, picture_target_store: PictureTargetStore | None = None, ): """Initialize global dependencies.""" global _device_store, _template_store, _processor_manager global _pp_template_store, _pattern_template_store, _picture_source_store, _picture_target_store _device_store = device_store _template_store = template_store _processor_manager = processor_manager _pp_template_store = pp_template_store _pattern_template_store = pattern_template_store _picture_source_store = picture_source_store _picture_target_store = picture_target_store