From 4e2ab29ea1bcf6cdfd70d48a056fa408ea1fd086 Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Wed, 13 Aug 2025 15:19:48 -0500 Subject: [PATCH] improve query --- frigate/api/app.py | 19 +++++++++---------- .../overlay/dialog/SearchFilterDialog.tsx | 16 ++++++++-------- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/frigate/api/app.py b/frigate/api/app.py index 5860377e7..f6e9471f2 100644 --- a/frigate/api/app.py +++ b/frigate/api/app.py @@ -20,7 +20,7 @@ from fastapi.encoders import jsonable_encoder from fastapi.params import Depends from fastapi.responses import JSONResponse, PlainTextResponse, StreamingResponse from markupsafe import escape -from peewee import operator +from peewee import SQL, operator from pydantic import ValidationError from frigate.api.auth import require_role @@ -685,7 +685,14 @@ def plusModels(request: Request, filterByCurrentModelDetector: bool = False): @router.get("/recognized_license_plates") def get_recognized_license_plates(split_joined: Optional[int] = None): try: - events = Event.select(Event.data).distinct() + query = ( + Event.select( + SQL("json_extract(data, '$.recognized_license_plate') AS plate") + ) + .where(SQL("json_extract(data, '$.recognized_license_plate') IS NOT NULL")) + .distinct() + ) + recognized_license_plates = [row[0] for row in query.tuples()] except Exception: return JSONResponse( content=( @@ -694,14 +701,6 @@ def get_recognized_license_plates(split_joined: Optional[int] = None): status_code=404, ) - recognized_license_plates = [] - for e in events: - if e.data is not None and "recognized_license_plate" in e.data: - recognized_license_plates.append(e.data["recognized_license_plate"]) - - while None in recognized_license_plates: - recognized_license_plates.remove(None) - if split_joined: original_recognized_license_plates = recognized_license_plates.copy() for recognized_license_plate in original_recognized_license_plates: diff --git a/web/src/components/overlay/dialog/SearchFilterDialog.tsx b/web/src/components/overlay/dialog/SearchFilterDialog.tsx index 45ba338f4..b9c03c796 100644 --- a/web/src/components/overlay/dialog/SearchFilterDialog.tsx +++ b/web/src/components/overlay/dialog/SearchFilterDialog.tsx @@ -948,11 +948,11 @@ export function RecognizedLicensePlatesFilterContent({
{t("recognizedLicensePlates.title")}
{allRecognizedLicensePlates == undefined ? ( -

- - {t("recognizedLicensePlates.loading")} -

- ) : allRecognizedLicensePlates.length === 0 ? null : ( +
+ +

{t("recognizedLicensePlates.loading")}

+
+ ) : allRecognizedLicensePlates.length == 0 ? null : ( <> )} +

+ {t("recognizedLicensePlates.selectPlatesFromList")} +

)} -

- {t("recognizedLicensePlates.selectPlatesFromList")} -

); }