influxdb/kapacitor/operators.go

79 lines
1.7 KiB
Go
Raw Normal View History

package kapacitor
import (
"fmt"
)
const (
2017-03-06 16:11:52 +00:00
greaterThan = "greater than"
lessThan = "less than"
lessThanEqual = "equal to or less than"
greaterThanEqual = "equal to or greater"
equal = "equal to"
notEqual = "not equal to"
insideRange = "inside range"
outsideRange = "outside range"
)
// kapaOperator converts UI strings to kapacitor operators
func kapaOperator(operator string) (string, error) {
switch operator {
2017-03-06 16:11:52 +00:00
case greaterThan:
return ">", nil
2017-03-06 16:11:52 +00:00
case lessThan:
return "<", nil
case lessThanEqual:
return "<=", nil
case greaterThanEqual:
return ">=", nil
case equal:
return "==", nil
case notEqual:
return "!=", nil
default:
return "", fmt.Errorf("invalid operator: %s is unknown", operator)
}
}
func chronoOperator(operator string) (string, error) {
switch operator {
case ">":
return greaterThan, nil
case "<":
return lessThan, nil
case "<=":
return lessThanEqual, nil
case ">=":
return greaterThanEqual, nil
case "==":
return equal, nil
case "!=":
return notEqual, nil
default:
return "", fmt.Errorf("invalid operator: %s is unknown", operator)
}
}
func rangeOperators(operator string) ([]string, error) {
switch operator {
case insideRange:
return []string{">=", "AND", "<="}, nil
case outsideRange:
return []string{"<", "OR", ">"}, nil
default:
return nil, fmt.Errorf("invalid operator: %s is unknown", operator)
}
}
func chronoRangeOperators(ops []string) (string, error) {
if len(ops) != 3 {
return "", fmt.Errorf("Unknown operators")
}
if ops[0] == ">=" && ops[1] == "AND" && ops[2] == "<=" {
return insideRange, nil
} else if ops[0] == "<" && ops[1] == "OR" && ops[2] == ">" {
return outsideRange, nil
}
return "", fmt.Errorf("Unknown operators")
}