@@ -1654,7 +1654,7 @@ func (j *Expression) FromValue(input map[string]any) error {
1654
1654
return fmt .Errorf ("field expressions in Expression: expected array, got %v" , rawExpressions )
1655
1655
}
1656
1656
1657
- var expressions []Expression
1657
+ expressions := []Expression {}
1658
1658
for i , rawItem := range rawExpressionsArray {
1659
1659
if rawItem == nil {
1660
1660
continue
@@ -1814,7 +1814,9 @@ func (j Expression) AsAnd() (*ExpressionAnd, error) {
1814
1814
}
1815
1815
expressions , ok := rawExpressions .([]Expression )
1816
1816
if ! ok {
1817
- return nil , fmt .Errorf ("invalid ExpressionAnd.expression type; expected: []Expression, got: %+v" , rawExpressions )
1817
+ if err := mapstructure .Decode (rawExpressions , & expressions ); err != nil {
1818
+ return nil , fmt .Errorf ("invalid ExpressionAnd.expression type; expected: []Expression, got: %v" , rawExpressions )
1819
+ }
1818
1820
}
1819
1821
1820
1822
return & ExpressionAnd {
@@ -1829,6 +1831,7 @@ func (j Expression) AsOr() (*ExpressionOr, error) {
1829
1831
if err != nil {
1830
1832
return nil , err
1831
1833
}
1834
+
1832
1835
if t != ExpressionTypeOr {
1833
1836
return nil , fmt .Errorf ("invalid Expression type; expected: %s, got: %s" , ExpressionTypeOr , t )
1834
1837
}
@@ -1837,9 +1840,12 @@ func (j Expression) AsOr() (*ExpressionOr, error) {
1837
1840
if ! ok {
1838
1841
return nil , errors .New ("ExpressionOr.expression is required" )
1839
1842
}
1843
+
1840
1844
expressions , ok := rawExpressions .([]Expression )
1841
1845
if ! ok {
1842
- return nil , fmt .Errorf ("invalid ExpressionOr.expression type; expected: []Expression, got: %+v" , rawExpressions )
1846
+ if err := mapstructure .Decode (rawExpressions , & expressions ); err != nil {
1847
+ return nil , fmt .Errorf ("invalid ExpressionOr.expression type; expected: []Expression, got: %v" , rawExpressions )
1848
+ }
1843
1849
}
1844
1850
1845
1851
return & ExpressionOr {
@@ -1862,9 +1868,12 @@ func (j Expression) AsNot() (*ExpressionNot, error) {
1862
1868
if ! ok {
1863
1869
return nil , errors .New ("ExpressionNot.expression is required" )
1864
1870
}
1871
+
1865
1872
expression , ok := rawExpression .(Expression )
1866
1873
if ! ok {
1867
- return nil , fmt .Errorf ("invalid ExpressionNot.expression type; expected: Expression, got: %+v" , rawExpression )
1874
+ if err := mapstructure .Decode (rawExpression , & expression ); err != nil {
1875
+ return nil , fmt .Errorf ("invalid ExpressionNot.expression type; expected: Expression, got: %+v" , rawExpression )
1876
+ }
1868
1877
}
1869
1878
1870
1879
return & ExpressionNot {
@@ -1879,6 +1888,7 @@ func (j Expression) AsUnaryComparisonOperator() (*ExpressionUnaryComparisonOpera
1879
1888
if err != nil {
1880
1889
return nil , err
1881
1890
}
1891
+
1882
1892
if t != ExpressionTypeUnaryComparisonOperator {
1883
1893
return nil , fmt .Errorf ("invalid Expression type; expected: %s, got: %s" , ExpressionTypeUnaryComparisonOperator , t )
1884
1894
}
@@ -1887,6 +1897,7 @@ func (j Expression) AsUnaryComparisonOperator() (*ExpressionUnaryComparisonOpera
1887
1897
if ! ok {
1888
1898
return nil , errors .New ("ExpressionUnaryComparisonOperator.operator is required" )
1889
1899
}
1900
+
1890
1901
operator , ok := rawOperator .(UnaryComparisonOperator )
1891
1902
if ! ok {
1892
1903
operatorStr , ok := rawOperator .(string )
@@ -1901,6 +1912,7 @@ func (j Expression) AsUnaryComparisonOperator() (*ExpressionUnaryComparisonOpera
1901
1912
if ! ok {
1902
1913
return nil , errors .New ("ExpressionUnaryComparisonOperator.column is required" )
1903
1914
}
1915
+
1904
1916
column , ok := rawColumn .(ComparisonTarget )
1905
1917
if ! ok {
1906
1918
return nil , fmt .Errorf ("invalid ExpressionUnaryComparisonOperator.column type; expected: ComparisonTarget, got: %v" , rawColumn )
@@ -2000,6 +2012,7 @@ func (j Expression) InterfaceT() (ExpressionEncoder, error) {
2000
2012
if err != nil {
2001
2013
return nil , err
2002
2014
}
2015
+
2003
2016
switch t {
2004
2017
case ExpressionTypeAnd :
2005
2018
return j .AsAnd ()
0 commit comments