in pkg/query/logical/tag_filter.go [128:163]
func parseFilter(cond *modelv1.Condition, expr ComparableExpr) (TagFilter, error) {
switch cond.Op {
case modelv1.Condition_BINARY_OP_GT:
return newRangeTag(cond.Name, rangeOpts{
Lower: expr,
}), nil
case modelv1.Condition_BINARY_OP_GE:
return newRangeTag(cond.Name, rangeOpts{
IncludesLower: true,
Lower: expr,
}), nil
case modelv1.Condition_BINARY_OP_LT:
return newRangeTag(cond.Name, rangeOpts{
Upper: expr,
}), nil
case modelv1.Condition_BINARY_OP_LE:
return newRangeTag(cond.Name, rangeOpts{
IncludesUpper: true,
Upper: expr,
}), nil
case modelv1.Condition_BINARY_OP_EQ:
return newEqTag(cond.Name, expr), nil
case modelv1.Condition_BINARY_OP_NE:
return newNotTag(newEqTag(cond.Name, expr)), nil
case modelv1.Condition_BINARY_OP_HAVING:
return newHavingTag(cond.Name, expr), nil
case modelv1.Condition_BINARY_OP_NOT_HAVING:
return newNotTag(newHavingTag(cond.Name, expr)), nil
case modelv1.Condition_BINARY_OP_IN:
return newInTag(cond.Name, expr), nil
case modelv1.Condition_BINARY_OP_NOT_IN:
return newNotTag(newInTag(cond.Name, expr)), nil
default:
return nil, errors.WithMessagef(errUnsupportedConditionOp, "tag filter parses %v", cond)
}
}