From a2206bb1773b6668cda36a581323b06211941426 Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Mon, 11 Sep 2023 16:07:04 -0600 Subject: [PATCH] Reduce database queries to necessary fields (#7751) * Reduce database queries to necessary labels * Set columns for other queries * skip creating model instances --------- Co-authored-by: Blake Blackshear --- frigate/events/cleanup.py | 10 ++++++++-- frigate/http.py | 28 +++++++++++++++++----------- frigate/record/cleanup.py | 21 +++++++++++++++++---- frigate/record/maintainer.py | 5 ++++- frigate/storage.py | 21 ++++++++++++++++----- 5 files changed, 62 insertions(+), 23 deletions(-) diff --git a/frigate/events/cleanup.py b/frigate/events/cleanup.py index 793e01293..1f1fb5f76 100644 --- a/frigate/events/cleanup.py +++ b/frigate/events/cleanup.py @@ -83,7 +83,10 @@ class EventCleanup(threading.Thread): datetime.datetime.now() - datetime.timedelta(days=expire_days) ).timestamp() # grab all events after specific time - expired_events = Event.select().where( + expired_events = Event.select( + Event.id, + Event.camera, + ).where( Event.camera.not_in(self.camera_keys), Event.start_time < expire_after, Event.label == event.label, @@ -133,7 +136,10 @@ class EventCleanup(threading.Thread): datetime.datetime.now() - datetime.timedelta(days=expire_days) ).timestamp() # grab all events after specific time - expired_events = Event.select().where( + expired_events = Event.select( + Event.id, + Event.camera, + ).where( Event.camera == name, Event.start_time < expire_after, Event.label == event.label, diff --git a/frigate/http.py b/frigate/http.py index f401e21e6..ed47c8661 100644 --- a/frigate/http.py +++ b/frigate/http.py @@ -590,9 +590,10 @@ def timeline(): .where(reduce(operator.and_, clauses)) .order_by(Timeline.timestamp.asc()) .limit(limit) + .dicts() ) - return jsonify([model_to_dict(t) for t in timeline]) + return jsonify([t for t in timeline]) @bp.route("//