feat: use connection pool instead of a single shared connection

This is useful for multitask environments (like the API), to avoid
conflicts
This commit is contained in:
Alexis Fourmaux 2026-05-10 14:55:50 +02:00
parent a22413bb0b
commit aa72971627
5 changed files with 95 additions and 62 deletions

View file

@ -1,7 +1,6 @@
import os
from functools import lru_cache
from adapters.postgres import connect, PgDeviceRepository, PgReadingRepository
from adapters.postgres import PgDeviceRepository, PgReadingRepository
from adapters.postgres_query import PgReadingQueryRepository
from adapters.mqtt import PahoMqttBroker
from services.uplink_service import UplinkService
@ -10,21 +9,17 @@ 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())
return PgDeviceRepository()
def get_reading_repo() -> PgReadingRepository:
return PgReadingRepository(get_conn())
return PgReadingRepository()
def get_query_repo() -> PgReadingQueryRepository:
return PgReadingQueryRepository(get_conn())
return PgReadingQueryRepository()
## Services