import os from adapters.postgres import PgDeviceRepository, PgReadingRepository, PgReadingQueryRepository from adapters.mqtt import PahoMqttBroker from services.uplink_service import UplinkService from services.consumption_service import ConsumptionService from services.devices_service import DeviceService MQTT_HOST = os.getenv("MQTT_HOST", "mosquitto") MQTT_PORT = int(os.getenv("MQTT_PORT", 1883)) MQTT_TOPIC = os.getenv("MQTT_TOPIC", "application/+/device/+/event/up") ## Repositories def get_device_repo() -> PgDeviceRepository: return PgDeviceRepository() def get_reading_repo() -> PgReadingRepository: return PgReadingRepository() def get_query_repo() -> PgReadingQueryRepository: return PgReadingQueryRepository() ## Services def get_uplink_service() -> UplinkService: return UplinkService(get_device_repo(), get_reading_repo()) def get_consumption_service() -> ConsumptionService: return ConsumptionService(get_query_repo()) def get_device_service() -> DeviceService: return DeviceService(get_device_repo()) ## Adapters def get_mqtt_broker() -> PahoMqttBroker: return PahoMqttBroker(MQTT_HOST, MQTT_PORT, MQTT_TOPIC)