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_PREDATOR = "WILDLIFE_PREDATOR"
|
||||||
WILDLIFE_NUISANCE = "WILDLIFE_NUISANCE"
|
WILDLIFE_NUISANCE = "WILDLIFE_NUISANCE"
|
||||||
WILDLIFE_PASSIVE = "WILDLIFE_PASSIVE"
|
WILDLIFE_PASSIVE = "WILDLIFE_PASSIVE"
|
||||||
|
PACKAGE_DELIVERED = "PACKAGE_DELIVERED"
|
||||||
|
PACKAGE_REMINDER = "PACKAGE_REMINDER"
|
||||||
|
PACKAGE_COLLECTED = "PACKAGE_COLLECTED"
|
||||||
|
|
||||||
|
|
||||||
# --- Sensor Types ---
|
# --- Sensor Types ---
|
||||||
@ -180,6 +183,18 @@ class Topics:
|
|||||||
def camera_wildlife_detected(camera_id: str) -> str:
|
def camera_wildlife_detected(camera_id: str) -> str:
|
||||||
return f"vigilar/camera/{camera_id}/wildlife/detected"
|
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
|
@staticmethod
|
||||||
def pet_location(pet_name: str) -> str:
|
def pet_location(pet_name: str) -> str:
|
||||||
return f"vigilar/pets/{pet_name}/location"
|
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_ts", wildlife_sightings.c.ts.desc())
|
||||||
Index("idx_wildlife_threat", wildlife_sightings.c.threat_level, 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 = Table(
|
||||||
"pet_training_images",
|
"pet_training_images",
|
||||||
metadata,
|
metadata,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user