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") @bp.route("/timeline")
def timeline(): def timeline():
camera = request.args.get("camera", "all") camera = request.args.get("camera", "all")
source_id = request.args.get("source_id", type=str)
limit = request.args.get("limit", 100) limit = request.args.get("limit", 100)
clauses = [] clauses = []
@ -431,8 +431,18 @@ def timeline():
Timeline.data, 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 = (
Timeline.select(*selected_columns) Timeline.select(*selected_columns)
.where(reduce(operator.and_, clauses))
.order_by(Timeline.timestamp.asc()) .order_by(Timeline.timestamp.asc())
.limit(limit) .limit(limit)
) )

View File

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