github.com/voedger/voedger@v0.0.0-20240520144910-273e84102129/pkg/processors/query/filter-less-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 LessFilter struct {
    14  	field string
    15  	value interface{}
    16  }
    17  
    18  func (f LessFilter) 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_Lt, f.field, ErrWrongType)
    34  	}
    35  }