diff --git a/r2/r2/lib/db/operators.py b/r2/r2/lib/db/operators.py index 84137ceda..ccc15c246 100644 --- a/r2/r2/lib/db/operators.py +++ b/r2/r2/lib/db/operators.py @@ -50,6 +50,7 @@ class lt(op): pass class lte(op): pass class gt(op): pass class gte(op): pass +class in_(op): pass class Slot(object): def __init__(self, lval): @@ -80,6 +81,9 @@ class Slot(object): def __ge__(self, other): return gte(self, self.name, other) + def in_(self, other): + return in_(self, self.name, other) + class Slots(object): def __getattr__(self, attr): return Slot(attr) diff --git a/r2/r2/lib/db/tdb_sql.py b/r2/r2/lib/db/tdb_sql.py index 491072cc8..4904bb9a8 100644 --- a/r2/r2/lib/db/tdb_sql.py +++ b/r2/r2/lib/db/tdb_sql.py @@ -726,6 +726,8 @@ def sa_op(op): fn = lambda x,y: x >= y elif isinstance(op, operators.lte): fn = lambda x,y: x <= y + elif isinstance(op, operators.in_): + return sa.or_(op.lval.in_(op.rval)) rval = tup(op.rval)