@@ -424,9 +424,10 @@ pub fn get_filter_string(where_clause: &Conditions) -> Result<String, String> {
424
424
format ! ( "NOT LIKE '%{escaped_value}' ESCAPE '\\ '" )
425
425
}
426
426
_ => {
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) => {
430
431
format ! ( "'{val}'" )
431
432
}
432
433
} ;
@@ -461,7 +462,7 @@ fn match_alert_operator(expr: &ConditionConfig) -> Expr {
461
462
. replace ( "'" , "\\ '" )
462
463
. replace ( '%' , "\\ %" )
463
464
. replace ( '_' , "\\ _" ) ;
464
- let value = NumberOrString :: from_string ( string_value. clone ( ) ) ;
465
+ let value = ValueType :: from_string ( string_value. clone ( ) ) ;
465
466
466
467
// for maintaining column case
467
468
let column = format ! ( r#""{}""# , expr. column) ;
@@ -525,34 +526,39 @@ fn match_aggregate_operation(agg: &AggregateConfig) -> Expr {
525
526
}
526
527
}
527
528
528
- enum NumberOrString {
529
+ enum ValueType {
529
530
Number ( f64 ) ,
530
531
String ( String ) ,
532
+ Boolean ( bool ) ,
531
533
}
532
534
533
- impl Literal for NumberOrString {
535
+ impl Literal for ValueType {
534
536
fn lit ( & self ) -> Expr {
535
537
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) ,
538
541
}
539
542
}
540
543
}
541
- impl NumberOrString {
544
+ impl ValueType {
542
545
fn from_string ( value : String ) -> Self {
543
546
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)
545
550
} else {
546
- NumberOrString :: String ( value)
551
+ ValueType :: String ( value)
547
552
}
548
553
}
549
554
}
550
555
551
- impl Display for NumberOrString {
556
+ impl Display for ValueType {
552
557
fn fmt ( & self , f : & mut std:: fmt:: Formatter < ' _ > ) -> std:: fmt:: Result {
553
558
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}" ) ,
556
562
}
557
563
}
558
564
}
0 commit comments