influxdb/predicate/predicate.go

36 lines
702 B
Go
Raw Normal View History

2019-09-23 16:00:03 +00:00
package predicate
import (
"github.com/influxdata/influxdb/v2"
"github.com/influxdata/influxdb/v2/kit/platform/errors"
"github.com/influxdata/influxdb/v2/storage/reads/datatypes"
2020-08-26 17:46:47 +00:00
"github.com/influxdata/influxdb/v2/tsdb/engine/tsm1"
2019-09-23 16:00:03 +00:00
)
// Node is a predicate node.
type Node interface {
ToDataType() (*datatypes.Node, error)
}
// New predicate from a node
func New(n Node) (influxdb.Predicate, error) {
if n == nil {
return nil, nil
}
2019-09-23 16:00:03 +00:00
dt, err := n.ToDataType()
if err != nil {
return nil, err
}
pred, err := tsm1.NewProtobufPredicate(&datatypes.Predicate{
Root: dt,
})
if err != nil {
return nil, &errors.Error{
Code: errors.EInvalid,
2019-09-23 16:00:03 +00:00
Err: err,
}
}
return pred, nil
}