feat(Q5): add package event types and package_events table
This commit is contained in:
parent
38ff219364
commit
a5dd15d0a1
21
tests/unit/test_package_schema.py
Normal file
21
tests/unit/test_package_schema.py
Normal file
@ -0,0 +1,21 @@
|
||||
from vigilar.constants import EventType
|
||||
from vigilar.storage.schema import package_events
|
||||
|
||||
|
||||
def test_package_delivered_event_type():
|
||||
assert EventType.PACKAGE_DELIVERED == "PACKAGE_DELIVERED"
|
||||
|
||||
|
||||
def test_package_reminder_event_type():
|
||||
assert EventType.PACKAGE_REMINDER == "PACKAGE_REMINDER"
|
||||
|
||||
|
||||
def test_package_collected_event_type():
|
||||
assert EventType.PACKAGE_COLLECTED == "PACKAGE_COLLECTED"
|
||||
|
||||
|
||||
def test_package_events_table_columns():
|
||||
col_names = [c.name for c in package_events.columns]
|
||||
assert "camera_id" in col_names
|
||||
assert "detected_at" in col_names
|
||||
assert "status" in col_names
|
||||
@ -45,6 +45,9 @@ class EventType(StrEnum):
|
||||
WILDLIFE_PREDATOR = "WILDLIFE_PREDATOR"
|
||||
WILDLIFE_NUISANCE = "WILDLIFE_NUISANCE"
|
||||
WILDLIFE_PASSIVE = "WILDLIFE_PASSIVE"
|
||||
PACKAGE_DELIVERED = "PACKAGE_DELIVERED"
|
||||
PACKAGE_REMINDER = "PACKAGE_REMINDER"
|
||||
PACKAGE_COLLECTED = "PACKAGE_COLLECTED"
|
||||
|
||||
|
||||
# --- Sensor Types ---
|
||||
@ -180,6 +183,18 @@ class Topics:
|
||||
def camera_wildlife_detected(camera_id: str) -> str:
|
||||
return f"vigilar/camera/{camera_id}/wildlife/detected"
|
||||
|
||||
@staticmethod
|
||||
def camera_package_delivered(camera_id: str) -> str:
|
||||
return f"vigilar/camera/{camera_id}/package/delivered"
|
||||
|
||||
@staticmethod
|
||||
def camera_package_reminder(camera_id: str) -> str:
|
||||
return f"vigilar/camera/{camera_id}/package/reminder"
|
||||
|
||||
@staticmethod
|
||||
def camera_package_collected(camera_id: str) -> str:
|
||||
return f"vigilar/camera/{camera_id}/package/collected"
|
||||
|
||||
@staticmethod
|
||||
def pet_location(pet_name: str) -> str:
|
||||
return f"vigilar/pets/{pet_name}/location"
|
||||
|
||||
@ -172,6 +172,20 @@ wildlife_sightings = Table(
|
||||
Index("idx_wildlife_ts", wildlife_sightings.c.ts.desc())
|
||||
Index("idx_wildlife_threat", wildlife_sightings.c.threat_level, wildlife_sightings.c.ts.desc())
|
||||
|
||||
package_events = Table(
|
||||
"package_events",
|
||||
metadata,
|
||||
Column("id", Integer, primary_key=True, autoincrement=True),
|
||||
Column("camera_id", String, nullable=False),
|
||||
Column("detected_at", Float, nullable=False),
|
||||
Column("reminded_at", Float),
|
||||
Column("collected_at", Float),
|
||||
Column("status", String, nullable=False),
|
||||
Column("crop_path", String),
|
||||
Column("event_id", Integer),
|
||||
)
|
||||
Index("idx_package_camera_status", package_events.c.camera_id, package_events.c.status)
|
||||
|
||||
pet_training_images = Table(
|
||||
"pet_training_images",
|
||||
metadata,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user