"""Dependency injection for API routes.""" from wled_controller.core.processing.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 from wled_controller.storage.color_strip_store import ColorStripStore from wled_controller.storage.audio_source_store import AudioSourceStore from wled_controller.storage.value_source_store import ValueSourceStore from wled_controller.storage.profile_store import ProfileStore from wled_controller.core.profiles.profile_engine import ProfileEngine # 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 _color_strip_store: ColorStripStore | None = None _audio_source_store: AudioSourceStore | None = None _value_source_store: ValueSourceStore | None = None _processor_manager: ProcessorManager | None = None _profile_store: ProfileStore | None = None _profile_engine: ProfileEngine | 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_color_strip_store() -> ColorStripStore: """Get color strip store dependency.""" if _color_strip_store is None: raise RuntimeError("Color strip store not initialized") return _color_strip_store def get_audio_source_store() -> AudioSourceStore: """Get audio source store dependency.""" if _audio_source_store is None: raise RuntimeError("Audio source store not initialized") return _audio_source_store def get_value_source_store() -> ValueSourceStore: """Get value source store dependency.""" if _value_source_store is None: raise RuntimeError("Value source store not initialized") return _value_source_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 get_profile_store() -> ProfileStore: """Get profile store dependency.""" if _profile_store is None: raise RuntimeError("Profile store not initialized") return _profile_store def get_profile_engine() -> ProfileEngine: """Get profile engine dependency.""" if _profile_engine is None: raise RuntimeError("Profile engine not initialized") return _profile_engine 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, color_strip_store: ColorStripStore | None = None, audio_source_store: AudioSourceStore | None = None, value_source_store: ValueSourceStore | None = None, profile_store: ProfileStore | None = None, profile_engine: ProfileEngine | 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 global _color_strip_store, _audio_source_store, _value_source_store, _profile_store, _profile_engine _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 _color_strip_store = color_strip_store _audio_source_store = audio_source_store _value_source_store = value_source_store _profile_store = profile_store _profile_engine = profile_engine