Update.
This commit is contained in:
parent
de002c36ba
commit
7d533a9fe9
34
ads.py
34
ads.py
@ -740,8 +740,38 @@ class AsyncDataSet:
|
|||||||
def _build_where(where: Optional[Dict[str, Any]]) -> tuple[str, List[Any]]:
|
def _build_where(where: Optional[Dict[str, Any]]) -> tuple[str, List[Any]]:
|
||||||
if not where:
|
if not where:
|
||||||
return "", []
|
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(
|
async def _server_insert(
|
||||||
self, table: str, args: Dict[str, Any], return_id: bool = False
|
self, table: str, args: Dict[str, Any], return_id: bool = False
|
||||||
|
Loading…
Reference in New Issue
Block a user