Skip to content

Commit b87f998

Browse files
committed
fix: fixes
1 parent 9fd301c commit b87f998

1 file changed

Lines changed: 24 additions & 1 deletion

File tree

src/query_farm_server_base/parameter_types.py

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff 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+
223242
class 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

0 commit comments

Comments
 (0)