refacto: move ReadingRepository where it logically belongs

This commit is contained in:
Alexis Fourmaux 2026-05-10 15:06:36 +02:00
parent aa72971627
commit 017092040d
4 changed files with 26 additions and 21 deletions

View file

@ -0,0 +1,4 @@
from .reading_repository import PgReadingQueryRepository, PgReadingRepository
from .device_repository import PgDeviceRepository
__all__ = ["PgReadingQueryRepository", "PgDeviceRepository", "PgReadingRepository"]

View file

@ -2,7 +2,7 @@ import logging
import psycopg2
from ports import DeviceRepository, ReadingRepository
from ports import DeviceRepository
from domain.exceptions import DatabaseError
from infrastructure.db import get_conn
@ -28,21 +28,3 @@ class PgDeviceRepository(DeviceRepository):
return str(cur.fetchone()[0]) # type: ignore
except psycopg2.DatabaseError as e:
raise DatabaseError(f"Erreur de création du device {dev_eui}") from e
class PgReadingRepository(ReadingRepository):
def insert_reading(self, device_id: str, pulse_count: int) -> None:
try:
with get_conn() as conn:
with conn.cursor() as cur:
cur.execute(
"""
INSERT INTO reading (device_id, date, pulses)
VALUES (%s, NOW(), %s)
""",
(device_id, pulse_count),
)
except psycopg2.DatabaseError as e:
raise DatabaseError(
f"Erreur d'enregistrement de la télérelève sur le device {device_id}"
) from e

View file

@ -7,6 +7,7 @@ from domain.entities import ConsumptionPoint
from domain.exceptions import DatabaseError
from domain.value_objects import Granularity
from ports.reading_query_repository import ReadingQueryRepository
from ports.reading_repository import ReadingRepository
from infrastructure.db import get_conn
@ -69,3 +70,22 @@ class PgReadingQueryRepository(ReadingQueryRepository):
for row in rows
if row[1] is not None
]
class PgReadingRepository(ReadingRepository):
def insert_reading(self, device_id: str, pulse_count: int) -> None:
try:
with get_conn() as conn:
with conn.cursor() as cur:
cur.execute(
"""
INSERT INTO reading (device_id, date, pulses)
VALUES (%s, NOW(), %s)
""",
(device_id, pulse_count),
)
except psycopg2.DatabaseError as e:
raise DatabaseError(
f"Erreur d'enregistrement de la télérelève sur le device {device_id}"
) from e

View file

@ -1,7 +1,6 @@
import os
from adapters.postgres import PgDeviceRepository, PgReadingRepository
from adapters.postgres_query import PgReadingQueryRepository
from adapters.postgres import PgDeviceRepository, PgReadingRepository, PgReadingQueryRepository
from adapters.mqtt import PahoMqttBroker
from services.uplink_service import UplinkService
from services.consumption_service import ConsumptionService