from dataclasses import dataclass from config import load_app_config from db import TDengineWriter, load_tdengine_config @dataclass(frozen=True) class SenderDependencies: config: object @dataclass(frozen=True) class SubscriberDependencies: config: object @dataclass(frozen=True) class MockDependencies: config: object tdengine_config: object tdengine_writer: object data_file: str def build_sender_dependencies(config_path): return SenderDependencies(config=load_app_config(config_path)) def build_subscriber_dependencies(config_path): return SubscriberDependencies(config=load_app_config(config_path)) def build_mock_dependencies(config_path, data_file_override=""): app_config = load_app_config(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, )