mirror of
https://github.com/owncloud/ocis
synced 2026-04-25 17:25:21 +02:00
Add NumericRestrictionNode to the KQL PEG grammar so that range operators work with numeric values, not just DateTimes. This enables queries like `size>=1048576`, `photo.iso>=100`, `photo.fNumber>=2.8`, and `photo.focalLength<50`. Changes: - ast: add NumericNode with Key, Operator, Value (float64) - kql/dictionary.peg: add NumericRestrictionNode and Number rules - kql/factory.go: add buildNumericNode() - kql/cast.go: add toFloat64() - bleve/compiler.go: compile NumericNode to NumericRangeQuery Fixes: #12093 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
28 lines
815 B
Go
28 lines
815 B
Go
// Package test provides shared test primitives for ast testing.
|
|
package test
|
|
|
|
import (
|
|
"github.com/google/go-cmp/cmp"
|
|
"github.com/google/go-cmp/cmp/cmpopts"
|
|
"github.com/owncloud/ocis/v2/ocis-pkg/ast"
|
|
)
|
|
|
|
// DiffAst returns a human-readable report of the differences between two values
|
|
// by default it ignores every ast node Base field.
|
|
func DiffAst(x, y interface{}, opts ...cmp.Option) string {
|
|
return cmp.Diff(
|
|
x,
|
|
y,
|
|
append(
|
|
opts,
|
|
cmpopts.IgnoreFields(ast.Ast{}, "Base"),
|
|
cmpopts.IgnoreFields(ast.StringNode{}, "Base"),
|
|
cmpopts.IgnoreFields(ast.OperatorNode{}, "Base"),
|
|
cmpopts.IgnoreFields(ast.GroupNode{}, "Base"),
|
|
cmpopts.IgnoreFields(ast.BooleanNode{}, "Base"),
|
|
cmpopts.IgnoreFields(ast.DateTimeNode{}, "Base"),
|
|
cmpopts.IgnoreFields(ast.NumericNode{}, "Base"),
|
|
)...,
|
|
)
|
|
}
|