github.com/voedger/voedger@v0.0.0-20240520144910-273e84102129/pkg/processors/query/filter-greater-impl.go (about) 1 /* 2 * Copyright (c) 2021-present unTill Pro, Ltd. 3 */ 4 5 package queryprocessor 6 7 import ( 8 "fmt" 9 10 "github.com/voedger/voedger/pkg/appdef" 11 ) 12 13 type GreaterFilter struct { 14 field string 15 value interface{} 16 } 17 18 func (f GreaterFilter) IsMatch(fk FieldsKinds, outputRow IOutputRow) (bool, error) { 19 switch fk[f.field] { 20 case appdef.DataKind_int32: 21 return outputRow.Value(f.field).(int32) > int32(f.value.(float64)), nil 22 case appdef.DataKind_int64: 23 return outputRow.Value(f.field).(int64) > int64(f.value.(float64)), nil 24 case appdef.DataKind_float32: 25 return outputRow.Value(f.field).(float32) > float32(f.value.(float64)), nil 26 case appdef.DataKind_float64: 27 return outputRow.Value(f.field).(float64) > f.value.(float64), nil 28 case appdef.DataKind_string: 29 return outputRow.Value(f.field).(string) > f.value.(string), nil 30 case appdef.DataKind_null: 31 return false, nil 32 default: 33 return false, fmt.Errorf("'%s' filter: field %s: %w", filterKind_Gt, f.field, ErrWrongType) 34 } 35 }