83 lines
2.9 KiB
Python
83 lines
2.9 KiB
Python
from server.trackdirect.common.Model import Model
|
|
|
|
|
|
class StationTelemetryEqns(Model):
|
|
"""StationTelemetryEqns represents the telemetry equations sent by the related station
|
|
"""
|
|
|
|
def __init__(self, db):
|
|
"""The __init__ method.
|
|
|
|
Args:
|
|
db (psycopg2.Connection): Database connection
|
|
"""
|
|
super().__init__(db)
|
|
self.station_id: int | None = None
|
|
self.created_ts: str | None = None
|
|
self.latest_ts: str | None = None
|
|
self.valid_to_ts: str | None = None
|
|
self.a1: float | None = None
|
|
self.b1: float | None = None
|
|
self.c1: float | None = None
|
|
self.a2: float | None = None
|
|
self.b2: float | None = None
|
|
self.c2: float | None = None
|
|
self.a3: float | None = None
|
|
self.b3: float | None = None
|
|
self.c3: float | None = None
|
|
self.a4: float | None = None
|
|
self.b4: float | None = None
|
|
self.c4: float | None = None
|
|
self.a5: float | None = None
|
|
self.b5: float | None = None
|
|
self.c5: float | None = None
|
|
|
|
def validate(self) -> bool:
|
|
"""Returns true on success (when object content is valid), otherwise false
|
|
|
|
Returns:
|
|
True on success otherwise False
|
|
"""
|
|
if not isinstance(self.station_id, int) or self.station_id <= 0:
|
|
return False
|
|
# Add more validation checks as needed
|
|
return True
|
|
|
|
def insert(self) -> bool:
|
|
"""Method to call when we want to save a new object to database
|
|
|
|
Returns:
|
|
True on success otherwise False
|
|
"""
|
|
if not self.is_existing_object():
|
|
with self.db.cursor() as cursor:
|
|
cursor.execute(
|
|
"""UPDATE station_telemetry_eqns
|
|
SET valid_to_ts = %s
|
|
WHERE station_id = %s AND valid_to_ts IS NULL""",
|
|
(self.created_ts, self.station_id)
|
|
)
|
|
|
|
cursor.execute(
|
|
"""INSERT INTO station_telemetry_eqns(
|
|
station_id, created_ts, latest_ts, a1, b1, c1, a2, b2, c2, a3, b3, c3, a4, b4, c4, a5, b5, c5)
|
|
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""",
|
|
(self.station_id, self.created_ts, self.latest_ts,
|
|
self.a1, self.b1, self.c1,
|
|
self.a2, self.b2, self.c2,
|
|
self.a3, self.b3, self.c3,
|
|
self.a4, self.b4, self.c4,
|
|
self.a5, self.b5, self.c5)
|
|
)
|
|
self.db.commit()
|
|
return True
|
|
return False
|
|
|
|
def update(self) -> bool:
|
|
"""Method to call when we want to save changes to database
|
|
|
|
Returns:
|
|
True on success otherwise False
|
|
"""
|
|
# Implement the update logic as needed
|
|
return False |