From 7d533a9fe93a9761e1fe2852f4e4054500b7dbe6 Mon Sep 17 00:00:00 2001 From: retoor Date: Wed, 24 Sep 2025 19:29:58 +0200 Subject: [PATCH] Update. --- ads.py | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/ads.py b/ads.py index 4200e2a..363caa1 100644 --- a/ads.py +++ b/ads.py @@ -740,8 +740,38 @@ class AsyncDataSet: def _build_where(where: Optional[Dict[str, Any]]) -> tuple[str, List[Any]]: if not where: return "", [] - clauses, vals = zip(*[(f"`{k}` = ?", v) for k, v in where.items()]) - return " WHERE " + " AND ".join(clauses), list(vals) + + clauses = [] + vals = [] + + op_map = { + "$eq": "=", + "$ne": "!=", + "$gt": ">", + "$gte": ">=", + "$lt": "<", + "$lte": "<=" + } + + for k, v in where.items(): + if isinstance(v, dict): + # Handle operators like {"$lt": 10} + op_key = next(iter(v)) + if op_key in op_map: + operator = op_map[op_key] + value = v[op_key] + clauses.append(f"`{k}` {operator} ?") + vals.append(value) + else: + # Fallback for unexpected dict values + clauses.append(f"`{k}` = ?") + vals.append(json.dumps(v)) + else: + # Default to equality + clauses.append(f"`{k}` = ?") + vals.append(v) + + return " WHERE " + " AND ".join(clauses), vals async def _server_insert( self, table: str, args: Dict[str, Any], return_id: bool = False