@@ -424,9 +424,10 @@ pub fn get_filter_string(where_clause: &Conditions) -> Result<String, String> {
424424 format ! ( "NOT LIKE '%{escaped_value}' ESCAPE '\\ '" )
425425 }
426426 _ => {
427- let value = match NumberOrString :: from_string ( value. to_owned ( ) ) {
428- NumberOrString :: Number ( val) => format ! ( "{val}" ) ,
429- NumberOrString :: String ( val) => {
427+ let value = match ValueType :: from_string ( value. to_owned ( ) ) {
428+ ValueType :: Number ( val) => format ! ( "{val}" ) ,
429+ ValueType :: Boolean ( val) => format ! ( "{val}" ) ,
430+ ValueType :: String ( val) => {
430431 format ! ( "'{val}'" )
431432 }
432433 } ;
@@ -461,7 +462,7 @@ fn match_alert_operator(expr: &ConditionConfig) -> Expr {
461462 . replace ( "'" , "\\ '" )
462463 . replace ( '%' , "\\ %" )
463464 . replace ( '_' , "\\ _" ) ;
464- let value = NumberOrString :: from_string ( string_value. clone ( ) ) ;
465+ let value = ValueType :: from_string ( string_value. clone ( ) ) ;
465466
466467 // for maintaining column case
467468 let column = format ! ( r#""{}""# , expr. column) ;
@@ -525,34 +526,39 @@ fn match_aggregate_operation(agg: &AggregateConfig) -> Expr {
525526 }
526527}
527528
528- enum NumberOrString {
529+ enum ValueType {
529530 Number ( f64 ) ,
530531 String ( String ) ,
532+ Boolean ( bool ) ,
531533}
532534
533- impl Literal for NumberOrString {
535+ impl Literal for ValueType {
534536 fn lit ( & self ) -> Expr {
535537 match self {
536- NumberOrString :: Number ( expr) => lit ( * expr) ,
537- NumberOrString :: String ( expr) => lit ( expr. clone ( ) ) ,
538+ ValueType :: Number ( expr) => lit ( * expr) ,
539+ ValueType :: String ( expr) => lit ( expr. clone ( ) ) ,
540+ ValueType :: Boolean ( expr) => lit ( * expr) ,
538541 }
539542 }
540543}
541- impl NumberOrString {
544+ impl ValueType {
542545 fn from_string ( value : String ) -> Self {
543546 if let Ok ( num) = value. parse :: < f64 > ( ) {
544- NumberOrString :: Number ( num)
547+ ValueType :: Number ( num)
548+ } else if let Ok ( boolean) = value. parse :: < bool > ( ) {
549+ ValueType :: Boolean ( boolean)
545550 } else {
546- NumberOrString :: String ( value)
551+ ValueType :: String ( value)
547552 }
548553 }
549554}
550555
551- impl Display for NumberOrString {
556+ impl Display for ValueType {
552557 fn fmt ( & self , f : & mut std:: fmt:: Formatter < ' _ > ) -> std:: fmt:: Result {
553558 match self {
554- NumberOrString :: Number ( v) => write ! ( f, "{v}" ) ,
555- NumberOrString :: String ( v) => write ! ( f, "{v}" ) ,
559+ ValueType :: Number ( v) => write ! ( f, "{v}" ) ,
560+ ValueType :: String ( v) => write ! ( f, "{v}" ) ,
561+ ValueType :: Boolean ( v) => write ! ( f, "{v}" ) ,
556562 }
557563 }
558564}
0 commit comments