add parameters to event query

This commit is contained in:
Blake Blackshear 2020-11-16 07:27:56 -06:00
parent 8c5bfbd187
commit df56e079de

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')