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
|
from core.logging import setup_logging
|
||||||
import sys
|
from dependencies import get_conn, get_uplink_service, get_mqtt_broker
|
||||||
import os
|
|
||||||
|
|
||||||
from adapters.postgres import connect, PgDeviceRepository, PgReadingRepository
|
setup_logging()
|
||||||
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,
|
|
||||||
)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
conn = connect(DB_URI)
|
conn = get_conn()
|
||||||
broker = PahoMqttBroker(MQTT_HOST, MQTT_PORT, MQTT_TOPIC)
|
broker = get_mqtt_broker()
|
||||||
|
uplink = get_uplink_service()
|
||||||
devices = PgDeviceRepository(conn)
|
|
||||||
readings = PgReadingRepository(conn)
|
|
||||||
|
|
||||||
uplink = UplinkService(devices, readings)
|
|
||||||
|
|
||||||
broker.start(on_uplink=uplink.handle)
|
broker.start(on_uplink=uplink.handle)
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,40 @@
|
||||||
import os
|
import os
|
||||||
from functools import lru_cache
|
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.postgres_query import PgReadingQueryRepository
|
||||||
|
from adapters.mqtt import PahoMqttBroker
|
||||||
|
from services.uplink_service import UplinkService
|
||||||
from services.consumption_service import ConsumptionService
|
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
|
@lru_cache
|
||||||
def get_conn():
|
def get_conn():
|
||||||
return connect(os.getenv("DATABASE_URL", "postgresql://simugaz:simugaz@db/simugaz"))
|
return connect(DB_URI)
|
||||||
|
|
||||||
## Repositories
|
## Repositories
|
||||||
|
def get_device_repo() -> PgDeviceRepository:
|
||||||
|
return PgDeviceRepository(get_conn())
|
||||||
|
|
||||||
|
def get_reading_repo() -> PgReadingRepository:
|
||||||
|
return PgReadingRepository(get_conn())
|
||||||
|
|
||||||
def get_query_repo() -> PgReadingQueryRepository:
|
def get_query_repo() -> PgReadingQueryRepository:
|
||||||
return PgReadingQueryRepository(get_conn())
|
return PgReadingQueryRepository(get_conn())
|
||||||
|
|
||||||
|
|
||||||
## Services
|
## Services
|
||||||
|
def get_uplink_service() -> UplinkService:
|
||||||
|
return UplinkService(get_device_repo(), get_reading_repo())
|
||||||
|
|
||||||
def get_consumption_service() -> ConsumptionService:
|
def get_consumption_service() -> ConsumptionService:
|
||||||
return ConsumptionService(get_query_repo())
|
return ConsumptionService(get_query_repo())
|
||||||
|
|
||||||
|
|
||||||
## Adapters
|
## 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