from dataclasses import dataclass from config.config import load from db import TDengineWriter, load_tdengine_config from model import AppConfig @dataclass(frozen=True) class SenderDependencies: config: AppConfig @dataclass(frozen=True) class SubscriberDependencies: config: AppConfig @dataclass(frozen=True) class WitsSenderDependencies: config: AppConfig @dataclass(frozen=True) class MockDependencies: config: AppConfig tdengine_config: object tdengine_writer: object data_file: str def build_sender_dependencies(config_path): return SenderDependencies(config=load(config_path)) def build_subscriber_dependencies(config_path): return SubscriberDependencies(config=load(config_path)) def build_wits_sender_dependencies(config_path): return WitsSenderDependencies(config=load(config_path)) def build_mock_dependencies(config_path, data_file_override=""): app_config = load(config_path) tdengine_config = load_tdengine_config(app_config, default_device_code=app_config.tms.device_code) return MockDependencies( config=app_config, tdengine_config=tdengine_config, tdengine_writer=TDengineWriter(tdengine_config), data_file=data_file_override or app_config.mqtt.data_file, )