def _date_time_filter(query: peewee.Query, attr, value: str): if '-' in value: start, end = value.split('-') # TODO: Add normalization for shorter value return query.where((attr >= start) & (attr <= end)) return query.where(attr == value)
def _text_filter(query: peewee.Query, attr, value: str): if isinstance(value, list): return query.where(attr << value) value = value.replace('?', '_') value = value.replace('*', '%') return query.where(attr**value)
def query(self, query: pw.Query, column: pw.Field, *ops: t.Tuple, **_) -> pw.Query: """Apply the filters to Peewee QuerySet..""" _, value = ops[0] return query.where(column.contains(value)) # type: ignore