fix: improve error management when decoding uplink messages
This commit is contained in:
parent
f77cf3dd75
commit
5c480db410
3 changed files with 50 additions and 26 deletions
|
|
@ -4,7 +4,7 @@ import time
|
|||
import psycopg2
|
||||
from psycopg2.extensions import connection
|
||||
from ports import DeviceRepository, ReadingRepository
|
||||
from exceptions import DatabaseConnectionError
|
||||
from exceptions import DatabaseConnectionError, DatabaseError
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
|
@ -27,19 +27,22 @@ class PgDeviceRepository(DeviceRepository):
|
|||
self._conn = conn
|
||||
|
||||
def get_or_create_device_id(self, dev_eui: str) -> str:
|
||||
with self._conn.cursor() as cur:
|
||||
cur.execute(
|
||||
"""
|
||||
INSERT INTO device (device_eui)
|
||||
VALUES (%s)
|
||||
ON CONFLICT (device_eui) DO NOTHING
|
||||
""",
|
||||
(dev_eui,),
|
||||
)
|
||||
cur.execute(
|
||||
"SELECT device_id FROM device WHERE device_eui = %s", (dev_eui,)
|
||||
)
|
||||
return str(cur.fetchone()[0])
|
||||
try:
|
||||
with self._conn.cursor() as cur:
|
||||
cur.execute(
|
||||
"""
|
||||
INSERT INTO device (device_eui)
|
||||
VALUES (%s)
|
||||
ON CONFLICT (device_eui) DO NOTHING
|
||||
""",
|
||||
(dev_eui,),
|
||||
)
|
||||
cur.execute(
|
||||
"SELECT device_id FROM device WHERE device_eui = %s", (dev_eui,)
|
||||
)
|
||||
return str(cur.fetchone()[0])
|
||||
except psycopg2.DatabaseError as e:
|
||||
raise DatabaseError(f"Erreur de création du device {dev_eui}") from e
|
||||
|
||||
|
||||
class PgReadingRepository(ReadingRepository):
|
||||
|
|
@ -47,11 +50,14 @@ class PgReadingRepository(ReadingRepository):
|
|||
self._conn = conn
|
||||
|
||||
def insert_reading(self, device_id: str, pulse_count: int) -> None:
|
||||
with self._conn.cursor() as cur:
|
||||
cur.execute(
|
||||
"""
|
||||
INSERT INTO reading (device_id, date, pulses)
|
||||
VALUES (%s, NOW(), %s)
|
||||
""",
|
||||
(device_id, pulse_count),
|
||||
)
|
||||
try:
|
||||
with self._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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue