internal/pkg/dsl/range.go (24 lines of code) (raw):
// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
// or more contributor license agreements. Licensed under the Elastic License;
// you may not use this file except in compliance with the Elastic License.
package dsl
type RangeOpt func(nodeMapT)
func WithRangeGT(v interface{}) RangeOpt {
return func(nmap nodeMapT) {
nmap[kKeywordGreaterThan] = &Node{leaf: v}
}
}
func WithRangeLTE(v interface{}) RangeOpt {
return func(nmap nodeMapT) {
nmap[kKeywordLessThanEq] = &Node{leaf: v}
}
}
func (n *Node) Range(field string, opts ...RangeOpt) {
fieldNode := &Node{
nodeMap: make(nodeMapT),
}
for _, o := range opts {
o(fieldNode.nodeMap)
}
childNode := n.appendOrSetChildNode("range")
childNode.nodeMap = nodeMapT{
field: fieldNode,
}
}