diff --git a/server/app/adapters/postgres/__init__.py b/server/app/adapters/postgres/__init__.py new file mode 100644 index 0000000..b9856e2 --- /dev/null +++ b/server/app/adapters/postgres/__init__.py @@ -0,0 +1,4 @@ +from .reading_repository import PgReadingQueryRepository, PgReadingRepository +from .device_repository import PgDeviceRepository + +__all__ = ["PgReadingQueryRepository", "PgDeviceRepository", "PgReadingRepository"] \ No newline at end of file diff --git a/server/app/adapters/postgres.py b/server/app/adapters/postgres/device_repository.py similarity index 57% rename from server/app/adapters/postgres.py rename to server/app/adapters/postgres/device_repository.py index fb9cc60..b48f10a 100644 --- a/server/app/adapters/postgres.py +++ b/server/app/adapters/postgres/device_repository.py @@ -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 diff --git a/server/app/adapters/postgres_query.py b/server/app/adapters/postgres/reading_repository.py similarity index 75% rename from server/app/adapters/postgres_query.py rename to server/app/adapters/postgres/reading_repository.py index b1143b6..2c6caba 100644 --- a/server/app/adapters/postgres_query.py +++ b/server/app/adapters/postgres/reading_repository.py @@ -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 \ No newline at end of file diff --git a/server/app/dependencies.py b/server/app/dependencies.py index b4160d5..4667fd5 100644 --- a/server/app/dependencies.py +++ b/server/app/dependencies.py @@ -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