Merge pull request #256 from thelittlebug/dsl-find-feature

add find operators
This commit is contained in:
Friedrich Lindenberg
2018-07-08 11:47:59 -04:00
committed by GitHub
3 changed files with 51 additions and 1 deletions
+18
View File
@@ -293,6 +293,24 @@ class Table(object):
clauses.append(false())
elif isinstance(value, (list, tuple)):
clauses.append(self.table.c[column].in_(value))
elif isinstance(value, dict):
key = list(value.keys())[0]
if key in ('like',):
clauses.append(self.table.c[column].like(value[key]))
elif key in ('>', 'gt'):
clauses.append(self.table.c[column] > value[key])
elif key in ('<', 'lt'):
clauses.append(self.table.c[column] < value[key])
elif key in ('>=', 'gte'):
clauses.append(self.table.c[column] >= value[key])
elif key in ('<=', 'lte'):
clauses.append(self.table.c[column] <= value[key])
elif key in ('!=', '<>', 'not'):
clauses.append(self.table.c[column] != value[key])
elif key in ('between', '..'):
clauses.append(self.table.c[column].between(value[key][0], value[key][1]))
else:
clauses.append(false())
else:
clauses.append(self.table.c[column] == value)
return and_(*clauses)