Add api with filtering

This commit is contained in:
Nick Mowen 2023-04-20 16:30:07 -06:00
parent ea3e7004ba
commit 2da8581729
2 changed files with 14 additions and 4 deletions

View File

@ -417,7 +417,7 @@ def event_thumbnail(id, max_cache_age=2592000):
@bp.route("/timeline")
def timeline():
camera = request.args.get("camera", "all")
source_id = request.args.get("source_id", type=str)
limit = request.args.get("limit", 100)
clauses = []
@ -431,8 +431,18 @@ def timeline():
Timeline.data,
]
if camera != "all":
clauses.append((Timeline.camera == camera))
if source_id:
clauses.append((Timeline.source_id == source_id))
if len(clauses) == 0:
clauses.append((True))
timeline = (
Timeline.select(*selected_columns)
.where(reduce(operator.and_, clauses))
.order_by(Timeline.timestamp.asc())
.limit(limit)
)

View File

@ -63,7 +63,7 @@ class TimelineProcessor(threading.Thread):
source_id=event_data["id"],
class_type="visible",
data={
"box": event_data["box"],
"box": event_data["box"], # TODO store as relative
"label": event_data["label"],
"region": event_data["region"],
},
@ -79,7 +79,7 @@ class TimelineProcessor(threading.Thread):
source_id=event_data["id"],
class_type="entered_zone",
data={
"box": event_data["box"],
"box": event_data["box"], # TODO store as relative
"label": event_data["label"],
"region": event_data["region"],
"zones": event_data["current_zones"],
@ -93,7 +93,7 @@ class TimelineProcessor(threading.Thread):
source_id=event_data["id"],
class_type="gone",
data={
"box": event_data["box"],
"box": event_data["box"], # TODO store as relative
"label": event_data["label"],
"region": event_data["region"],
},