From 178498b2dd8a8ffef374c7509008a676008e06a4 Mon Sep 17 00:00:00 2001 From: Rui Alves Date: Thu, 17 Oct 2024 11:01:46 +0100 Subject: [PATCH] Added body model for /reviews/viewed and /reviews/delete --- frigate/api/defs/review_body.py | 10 ++++++++++ frigate/api/review.py | 29 ++++++++--------------------- 2 files changed, 18 insertions(+), 21 deletions(-) create mode 100644 frigate/api/defs/review_body.py diff --git a/frigate/api/defs/review_body.py b/frigate/api/defs/review_body.py new file mode 100644 index 000000000..f996d9f2c --- /dev/null +++ b/frigate/api/defs/review_body.py @@ -0,0 +1,10 @@ +from pydantic import BaseModel, conlist, constr + + +class ReviewSetMultipleReviewedBody(BaseModel): + # List of string with at least one element and each element with at least one char + ids: conlist(constr(min_length=1), min_length=1) + +class ReviewDeleteMultipleReviewsBody(BaseModel): + # List of string with at least one element and each element with at least one char + ids: conlist(constr(min_length=1), min_length=1) diff --git a/frigate/api/review.py b/frigate/api/review.py index 0614514a2..0a36a99d0 100644 --- a/frigate/api/review.py +++ b/frigate/api/review.py @@ -14,6 +14,10 @@ from peewee import Case, DoesNotExist, fn, operator from playhouse.shortcuts import model_to_dict from frigate.api.defs.generic_response import GenericResponse +from frigate.api.defs.review_body import ( + ReviewDeleteMultipleReviewsBody, + ReviewSetMultipleReviewedBody, +) from frigate.api.defs.review_query_parameters import ( ReviewActivityMotionQueryParams, ReviewQueryParams, @@ -357,18 +361,9 @@ def review_summary(params: ReviewSummaryQueryParams = Depends()): @router.post("/reviews/viewed", response_model=GenericResponse) -def set_multiple_reviewed(body: dict = None): - json: dict[str, any] = body or {} - list_of_ids = json.get("ids", "") - - if not list_of_ids or len(list_of_ids) == 0: - return JSONResponse( - content=({"success": False, "message": "Not a valid list of ids"}), - status_code=404, - ) - +def set_multiple_reviewed(body: ReviewSetMultipleReviewedBody): ReviewSegment.update(has_been_reviewed=True).where( - ReviewSegment.id << list_of_ids + ReviewSegment.id << body.ids ).execute() return JSONResponse( @@ -378,16 +373,8 @@ def set_multiple_reviewed(body: dict = None): @router.post("/reviews/delete", response_model=GenericResponse) -def delete_reviews(body: dict = None): - json: dict[str, any] = body or {} - list_of_ids = json.get("ids", "") - - if not list_of_ids or len(list_of_ids) == 0: - return JSONResponse( - content=({"success": False, "message": "Not a valid list of ids"}), - status_code=404, - ) - +def delete_reviews(body: ReviewDeleteMultipleReviewsBody): + list_of_ids = body.ids reviews = ( ReviewSegment.select( ReviewSegment.camera,