File tree Expand file tree Collapse file tree
src/query_farm_server_base Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -220,10 +220,33 @@ class TableFunctionParameters(BaseModel):
220220 )
221221
222222
223+ class FilterData (BaseModel ):
224+ filters : list [Any ]
225+ column_binding_names_by_index : list [str ]
226+
227+
228+ def deserialize_json_filters (cls : Any , value : Any ) -> FilterData | None :
229+ if value is None or value == b"" :
230+ return None
231+ try :
232+ # handle both raw JSON string and parsed dict
233+ if isinstance (value , bytes ):
234+ value = value .decode ("utf-8" )
235+ if isinstance (value , str ):
236+ return FilterData .model_validate_json (value )
237+ return FilterData .model_validate (value )
238+ except Exception as e :
239+ raise ValueError (f"Invalid filter data: { e } " ) from e
240+
241+
223242class EndpointsParameters (BaseModel ):
224243 model_config = ConfigDict (arbitrary_types_allowed = True ) # for Pydantic v2
225244
226- json_filters : str
245+ json_filters : FilterData | None = None
246+ _validate_json_filters = field_validator ("json_filters" , mode = "before" )(
247+ deserialize_json_filters
248+ )
249+
227250 column_ids : list [int ]
228251
229252 table_function_parameters : pa .RecordBatch | None
You can’t perform that action at this time.
0 commit comments