diff --git a/torba/client/basedatabase.py b/torba/client/basedatabase.py index e5c28988d..91cd8347f 100644 --- a/torba/client/basedatabase.py +++ b/torba/client/basedatabase.py @@ -131,11 +131,16 @@ def constraints_to_sql(constraints, joiner=' AND ', prepend_key=''): else: raise ValueError(f"{col} requires a list, set or string as constraint value.") continue - elif key.endswith('__any'): + elif key.endswith('__any') or key.endswith('__or'): where, subvalues = constraints_to_sql(constraint, ' OR ', key+tag+'_') sql.append(f'({where})') values.update(subvalues) continue + elif key.endswith('__and'): + where, subvalues = constraints_to_sql(constraint, ' AND ', key+tag+'_') + sql.append(f'({where})') + values.update(subvalues) + continue sql.append(f'{col} {op} :{prepend_key}{key}{tag}') values[prepend_key+key+tag] = constraint return joiner.join(sql) if sql else '', values