From b8511b6be1f2ec2936583346a35b63c0db3e0c61 Mon Sep 17 00:00:00 2001 From: Shekar Siri Date: Mon, 10 Mar 2025 15:06:54 +0100 Subject: [PATCH] change(api): schema for card search with filter and sort --- api/schemas/schemas.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/api/schemas/schemas.py b/api/schemas/schemas.py index ceee5df7c..218b61d2a 100644 --- a/api/schemas/schemas.py +++ b/api/schemas/schemas.py @@ -1368,6 +1368,42 @@ class SearchCardsSchema(_PaginatedSchema): query: Optional[str] = Field(default=None) +class MetricSortColumnType(str, Enum): + NAME = "name" + METRIC_TYPE = "metric_type" + METRIC_OF = "metric_of" + IS_PUBLIC = "is_public" + CREATED_AT = "created_at" + EDITED_AT = "edited_at" + + +class MetricFilterColumnType(str, Enum): + NAME = "name" + METRIC_TYPE = "metric_type" + METRIC_OF = "metric_of" + IS_PUBLIC = "is_public" + USER_ID = "user_id" + CREATED_AT = "created_at" + EDITED_AT = "edited_at" + + +class MetricListSort(BaseModel): + field: Optional[str] = Field(default=None) + order: Optional[str] = Field(default=SortOrderType.DESC) + + +class MetricFilter(BaseModel): + type: Optional[str] = Field(default=None) + query: Optional[str] = Field(default=None) + + +class MetricSearchSchema(_PaginatedSchema): + filter: Optional[MetricFilter] = Field(default=None) + sort: Optional[MetricListSort] = Field(default=MetricListSort()) + shared_only: bool = Field(default=False) + mine_only: bool = Field(default=False) + + class _HeatMapSearchEventRaw(SessionSearchEventSchema2): type: Literal[EventType.LOCATION] = Field(...)