github.com/voedger/voedger@v0.0.0-20240520144910-273e84102129/pkg/processors/query/filter-not-equals-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 NotEqualsFilter struct { 14 field string 15 value interface{} 16 epsilon float64 17 } 18 19 func (f NotEqualsFilter) IsMatch(fk FieldsKinds, outputRow IOutputRow) (bool, error) { 20 switch fk[f.field] { 21 case appdef.DataKind_int32: 22 return outputRow.Value(f.field).(int32) != int32(f.value.(float64)), nil 23 case appdef.DataKind_int64: 24 return outputRow.Value(f.field).(int64) != int64(f.value.(float64)), nil 25 case appdef.DataKind_float32: 26 return !nearlyEqual(f.value.(float64), float64(outputRow.Value(f.field).(float32)), f.epsilon), nil 27 case appdef.DataKind_float64: 28 return !nearlyEqual(f.value.(float64), outputRow.Value(f.field).(float64), f.epsilon), nil 29 case appdef.DataKind_string: 30 return outputRow.Value(f.field).(string) != f.value.(string), nil 31 case appdef.DataKind_bool: 32 return outputRow.Value(f.field).(bool) != f.value.(bool), nil 33 case appdef.DataKind_null: 34 return false, nil 35 default: 36 return false, fmt.Errorf("'%s' filter: field %s: %w", filterKind_NotEq, f.field, ErrWrongType) 37 } 38 }