refacto: use common dependency injection repository for consumer app
This commit is contained in:
parent
f127a4c34c
commit
a22413bb0b
2 changed files with 26 additions and 28 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
Loading…
Add table
Add a link
Reference in a new issue