40 lines
No EOL
1.2 KiB
Python
40 lines
No EOL
1.2 KiB
Python
import os
|
|
from functools import lru_cache
|
|
|
|
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(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) |