def get_bool_operation(model_property: Column, operator: str, value: Any) -> Union[bool, ClauseElement]: if operator == "_eq": return model_property == value if operator == "_in": return model_property.in_(value) if operator == "_is_null": return model_property.is_(None) if operator == "_like": return model_property.like(value) if operator == "_neq": return model_property != value if operator == "_nin": return model_property.notin_(value) if operator == "_nlike": return model_property.notlike(value) if operator == "_lt": return model_property < value if operator == "_gt": return model_property > value if operator == "_lte": return model_property <= value if operator == "_gte": return model_property >= value raise Exception("Invalid operator")
def _filter_is_null(query: Query, column: Column): return query.filter(column.is_(None))