From a22413bb0bbcafa5a06b9f48a954a46a21f29d25 Mon Sep 17 00:00:00 2001 From: Alexis Fourmaux Date: Sun, 10 May 2026 13:26:08 +0200 Subject: [PATCH] refacto: use common dependency injection repository for consumer app --- server/app/consumer.py | 32 ++++++-------------------------- server/app/dependencies.py | 22 ++++++++++++++++++++-- 2 files changed, 26 insertions(+), 28 deletions(-) diff --git a/server/app/consumer.py b/server/app/consumer.py index 47d95c3..28ffcf9 100644 --- a/server/app/consumer.py +++ b/server/app/consumer.py @@ -1,31 +1,11 @@ -import logging -import sys -import os +from core.logging import setup_logging +from dependencies import get_conn, get_uplink_service, get_mqtt_broker -from adapters.postgres import connect, PgDeviceRepository, PgReadingRepository -from adapters.mqtt import PahoMqttBroker -from services.uplink_service import UplinkService - -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") -DB_URI = os.getenv("DATABASE_URL", "postgresql://simugaz:simugaz@db/simugaz") - -logging.basicConfig( - level=logging.INFO, - format="%(asctime)s [%(levelname)s] %(message)s", - datefmt="%Y-%m-%dT%H:%M:%S", - stream=sys.stdout, - force=True, -) +setup_logging() if __name__ == "__main__": - conn = connect(DB_URI) - broker = PahoMqttBroker(MQTT_HOST, MQTT_PORT, MQTT_TOPIC) - - devices = PgDeviceRepository(conn) - readings = PgReadingRepository(conn) - - uplink = UplinkService(devices, readings) + conn = get_conn() + broker = get_mqtt_broker() + uplink = get_uplink_service() broker.start(on_uplink=uplink.handle) diff --git a/server/app/dependencies.py b/server/app/dependencies.py index 6f68a56..ec4d0cc 100644 --- a/server/app/dependencies.py +++ b/server/app/dependencies.py @@ -1,22 +1,40 @@ import os from functools import lru_cache -from adapters.postgres import connect +from adapters.postgres import connect, PgDeviceRepository, PgReadingRepository from adapters.postgres_query import PgReadingQueryRepository +from adapters.mqtt import PahoMqttBroker +from services.uplink_service import UplinkService from services.consumption_service import ConsumptionService +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") +DB_URI = os.getenv("DATABASE_URI", "postgresql://simugaz:simugaz@db/simugaz") + @lru_cache def get_conn(): - return connect(os.getenv("DATABASE_URL", "postgresql://simugaz:simugaz@db/simugaz")) + return connect(DB_URI) ## Repositories +def get_device_repo() -> PgDeviceRepository: + return PgDeviceRepository(get_conn()) + +def get_reading_repo() -> PgReadingRepository: + return PgReadingRepository(get_conn()) + def get_query_repo() -> PgReadingQueryRepository: return PgReadingQueryRepository(get_conn()) ## Services +def get_uplink_service() -> UplinkService: + return UplinkService(get_device_repo(), get_reading_repo()) + def get_consumption_service() -> ConsumptionService: return ConsumptionService(get_query_repo()) ## Adapters +def get_mqtt_broker() -> PahoMqttBroker: + return PahoMqttBroker(MQTT_HOST, MQTT_PORT, MQTT_TOPIC) \ No newline at end of file