add parameters to event query

This commit is contained in:
Blake Blackshear 2020-11-16 07:27:56 -06:00
parent 00c75e9f98
commit 251c7fa982

View File

@ -1,12 +1,14 @@
import datetime
import logging import logging
import os import os
import time import time
from functools import reduce
import cv2 import cv2
import numpy as np import numpy as np
from flask import (Blueprint, Flask, Response, current_app, jsonify, from flask import (Blueprint, Flask, Response, current_app, jsonify,
make_response, request) make_response, request)
from peewee import SqliteDatabase from peewee import SqliteDatabase, operator
from playhouse.shortcuts import model_to_dict from playhouse.shortcuts import model_to_dict
from frigate.models import Event from frigate.models import Event
@ -42,7 +44,38 @@ def is_healthy():
@bp.route('/events') @bp.route('/events')
def events(): def events():
events = Event.select() limit = request.args.get('limit', 100)
camera = request.args.get('camera')
label = request.args.get('label')
zone = request.args.get('zone')
after = request.args.get('after', type=int)
before = request.args.get('before', type=int)
clauses = []
if camera:
clauses.append((Event.camera == camera))
if label:
clauses.append((Event.label == label))
if zone:
clauses.append((Event.zones.cast('text') % f"*\"{zone}\"*"))
if after:
clauses.append((Event.start_time >= after))
if before:
clauses.append((Event.start_time <= before))
if len(clauses) == 0:
clauses.append((1 == 1))
events = (Event.select()
.where(reduce(operator.and_, clauses))
.order_by(Event.start_time.desc())
.limit(limit))
return jsonify([model_to_dict(e) for e in events]) return jsonify([model_to_dict(e) for e in events])
@bp.route('/debug/stats') @bp.route('/debug/stats')