agreg-server/server/app/dependencies.py

40 lines
1.2 KiB
Python
Raw Normal View History

2026-05-10 12:36:38 +02:00
import os
from functools import lru_cache
from adapters.postgres import connect, PgDeviceRepository, PgReadingRepository
2026-05-10 12:36:38 +02:00
from adapters.postgres_query import PgReadingQueryRepository
from adapters.mqtt import PahoMqttBroker
from services.uplink_service import UplinkService
2026-05-10 12:36:38 +02:00
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")
2026-05-10 12:36:38 +02:00
@lru_cache
def get_conn():
return connect(DB_URI)
2026-05-10 12:36:38 +02:00
## Repositories
def get_device_repo() -> PgDeviceRepository:
return PgDeviceRepository(get_conn())
def get_reading_repo() -> PgReadingRepository:
return PgReadingRepository(get_conn())
2026-05-10 12:36:38 +02:00
def get_query_repo() -> PgReadingQueryRepository:
return PgReadingQueryRepository(get_conn())
## Services
def get_uplink_service() -> UplinkService:
return UplinkService(get_device_repo(), get_reading_repo())
2026-05-10 12:36:38 +02:00
def get_consumption_service() -> ConsumptionService:
return ConsumptionService(get_query_repo())
## Adapters
def get_mqtt_broker() -> PahoMqttBroker:
return PahoMqttBroker(MQTT_HOST, MQTT_PORT, MQTT_TOPIC)