1- using System ;
2- using System . Collections . Generic ;
3- using System . Linq ;
4- using System . Text ;
5- using Newtonsoft . Json ;
6- using Newtonsoft . Json . Converters ;
7- using Nest . Resolvers . Converters ;
8- using System . Linq . Expressions ;
9-
10- namespace Nest
11- {
12- public class BaseFilter
13- {
14- [ JsonProperty ( PropertyName = "bool" ) ]
15- internal BoolBaseFilterDescriptor BoolFilterDescriptor { get ; set ; }
16-
17- public static BaseFilter operator & ( BaseFilter lbq , BaseFilter rbq )
18- {
19- var f = new BaseFilter ( ) ;
1+ using System ;
2+ using System . Collections . Generic ;
3+ using System . Linq ;
4+ using System . Text ;
5+ using Newtonsoft . Json ;
6+ using Newtonsoft . Json . Converters ;
7+ using Nest . Resolvers . Converters ;
8+ using System . Linq . Expressions ;
9+
10+ namespace Nest
11+ {
12+ public class BaseFilter
13+ {
14+ [ JsonProperty ( PropertyName = "bool" ) ]
15+ internal BoolBaseFilterDescriptor BoolFilterDescriptor { get ; set ; }
16+
17+ internal bool IsConditionless { get ; set ; }
18+
19+ public static BaseFilter operator & ( BaseFilter lbq , BaseFilter rbq )
20+ {
21+ if ( lbq . IsConditionless && rbq . IsConditionless )
22+ return new BaseFilter ( ) { IsConditionless = true } ;
23+ else if ( lbq . IsConditionless )
24+ return rbq ;
25+ else if ( rbq . IsConditionless )
26+ return lbq ;
27+
28+ var f = new BaseFilter ( ) ;
2029 var fq = new BoolBaseFilterDescriptor ( ) ;
2130 f . BoolFilterDescriptor = fq ;
2231
@@ -40,100 +49,110 @@ public class BaseFilter
4049 if ( lbq . BoolFilterDescriptor . CanJoinMustNot ( ) && rbq . BoolFilterDescriptor . CanJoinMustNot ( ) )
4150 fq . _MustNotFilters = lbq . MergeMustNotFilters ( rbq ) ;
4251 return f ;
43- }
44- if ( lbq . BoolFilterDescriptor != null )
45- {
46- if ( lbq . BoolFilterDescriptor . _HasOnlyMustNot ( ) )
47- {
48- fq . _MustNotFilters = lbq . BoolFilterDescriptor . _MustNotFilters ;
49- fq . _MustFilters = new [ ] { rbq } ;
50- return f ;
51- }
52-
53- else if ( lbq . BoolFilterDescriptor . CanJoinMust ( ) )
54- fq . _MustFilters = lbq . MergeMustFilters ( rbq ) ;
55- else
56- fq . _MustFilters = new [ ] { lbq , rbq } ;
57-
58- if ( lbq . BoolFilterDescriptor . CanJoinMustNot ( ) )
59- fq . _MustNotFilters = lbq . MergeMustNotFilters ( rbq ) ;
60- return f ;
61- }
62-
63- if ( rbq . BoolFilterDescriptor . _HasOnlyMustNot ( ) )
64- {
65- fq . _MustNotFilters = rbq . BoolFilterDescriptor . _MustNotFilters ;
66- fq . _MustFilters = new [ ] { lbq } ;
67- return f ;
68- }
69-
70- if ( rbq . BoolFilterDescriptor . CanJoinMust ( ) )
71- fq . _MustFilters = rbq . MergeMustFilters ( lbq ) ;
72- else
73- fq . _MustFilters = new [ ] { rbq , lbq } ;
74-
75- if ( rbq . BoolFilterDescriptor . CanJoinMustNot ( ) )
76- fq . _MustNotFilters = rbq . MergeMustNotFilters ( lbq ) ;
77- return f ;
78-
79- }
80-
81- public static BaseFilter operator | ( BaseFilter lbq , BaseFilter rbq )
82- {
83- var f = new BaseFilter ( ) ;
84- var fq = new BoolBaseFilterDescriptor ( ) ;
85- fq . _ShouldFilters = new [ ] { lbq , rbq } ;
86- f . BoolFilterDescriptor = fq ;
87-
88- if ( lbq . BoolFilterDescriptor == null && rbq . BoolFilterDescriptor == null )
89- {
90- fq . _ShouldFilters = lbq . MergeShouldFilters ( rbq ) ;
91- return f ;
92- }
93- else if ( lbq . BoolFilterDescriptor != null && rbq . BoolFilterDescriptor == null )
94- {
95- JoinShouldOnSide ( lbq , rbq , fq ) ;
96- }
97- else if ( rbq . BoolFilterDescriptor != null && lbq . BoolFilterDescriptor == null )
98- {
99- JoinShouldOnSide ( rbq , lbq , fq ) ;
100- }
101- else
102- {
103- if ( lbq . BoolFilterDescriptor . CanJoinShould ( ) && rbq . BoolFilterDescriptor . CanJoinShould ( ) )
104- fq . _ShouldFilters = lbq . MergeShouldFilters ( rbq ) ;
105- else
106- fq . _ShouldFilters = new [ ] { lbq , rbq } ;
107- }
108-
109-
110-
111- return f ;
112- }
113-
114- public static BaseFilter operator ! ( BaseFilter lbq )
115- {
116- var f = new BaseFilter ( ) ;
117- var fq = new BoolBaseFilterDescriptor ( ) ;
118- fq . _MustNotFilters = new [ ] { lbq } ;
119-
120- f . BoolFilterDescriptor = fq ;
121- return f ;
122- }
123-
124- public static bool operator false( BaseFilter a )
125- {
126- return false ;
127- }
128-
129- public static bool operator true( BaseFilter a )
130- {
131- return false ;
132- }
133-
134- private static void JoinShouldOnSide ( BaseFilter lbq , BaseFilter rbq , BoolBaseFilterDescriptor bq )
135- {
136- bq . _ShouldFilters = lbq . MergeShouldFilters ( rbq ) ;
137- }
138- }
139- }
52+ }
53+ if ( lbq . BoolFilterDescriptor != null )
54+ {
55+ if ( lbq . BoolFilterDescriptor . _HasOnlyMustNot ( ) )
56+ {
57+ fq . _MustNotFilters = lbq . BoolFilterDescriptor . _MustNotFilters ;
58+ fq . _MustFilters = new [ ] { rbq } ;
59+ return f ;
60+ }
61+
62+ else if ( lbq . BoolFilterDescriptor . CanJoinMust ( ) )
63+ fq . _MustFilters = lbq . MergeMustFilters ( rbq ) ;
64+ else
65+ fq . _MustFilters = new [ ] { lbq , rbq } ;
66+
67+ if ( lbq . BoolFilterDescriptor . CanJoinMustNot ( ) )
68+ fq . _MustNotFilters = lbq . MergeMustNotFilters ( rbq ) ;
69+ return f ;
70+ }
71+
72+ if ( rbq . BoolFilterDescriptor . _HasOnlyMustNot ( ) )
73+ {
74+ fq . _MustNotFilters = rbq . BoolFilterDescriptor . _MustNotFilters ;
75+ fq . _MustFilters = new [ ] { lbq } ;
76+ return f ;
77+ }
78+
79+ if ( rbq . BoolFilterDescriptor . CanJoinMust ( ) )
80+ fq . _MustFilters = rbq . MergeMustFilters ( lbq ) ;
81+ else
82+ fq . _MustFilters = new [ ] { rbq , lbq } ;
83+
84+ if ( rbq . BoolFilterDescriptor . CanJoinMustNot ( ) )
85+ fq . _MustNotFilters = rbq . MergeMustNotFilters ( lbq ) ;
86+ return f ;
87+
88+ }
89+
90+ public static BaseFilter operator | ( BaseFilter lbq , BaseFilter rbq )
91+ {
92+ if ( lbq . IsConditionless && rbq . IsConditionless )
93+ return new BaseFilter ( ) { IsConditionless = true } ;
94+ else if ( lbq . IsConditionless )
95+ return rbq ;
96+ else if ( rbq . IsConditionless )
97+ return lbq ;
98+
99+ var f = new BaseFilter ( ) ;
100+ var fq = new BoolBaseFilterDescriptor ( ) ;
101+ fq . _ShouldFilters = new [ ] { lbq , rbq } ;
102+ f . BoolFilterDescriptor = fq ;
103+
104+ if ( lbq . BoolFilterDescriptor == null && rbq . BoolFilterDescriptor == null )
105+ {
106+ fq . _ShouldFilters = lbq . MergeShouldFilters ( rbq ) ;
107+ return f ;
108+ }
109+ else if ( lbq . BoolFilterDescriptor != null && rbq . BoolFilterDescriptor == null )
110+ {
111+ JoinShouldOnSide ( lbq , rbq , fq ) ;
112+ }
113+ else if ( rbq . BoolFilterDescriptor != null && lbq . BoolFilterDescriptor == null )
114+ {
115+ JoinShouldOnSide ( rbq , lbq , fq ) ;
116+ }
117+ else
118+ {
119+ if ( lbq . BoolFilterDescriptor . CanJoinShould ( ) && rbq . BoolFilterDescriptor . CanJoinShould ( ) )
120+ fq . _ShouldFilters = lbq . MergeShouldFilters ( rbq ) ;
121+ else
122+ fq . _ShouldFilters = new [ ] { lbq , rbq } ;
123+ }
124+
125+
126+
127+ return f ;
128+ }
129+
130+ public static BaseFilter operator ! ( BaseFilter lbq )
131+ {
132+ if ( lbq . IsConditionless )
133+ return new BaseFilter { IsConditionless = true } ;
134+
135+ var f = new BaseFilter ( ) ;
136+ var fq = new BoolBaseFilterDescriptor ( ) ;
137+ fq . _MustNotFilters = new [ ] { lbq } ;
138+
139+ f . BoolFilterDescriptor = fq ;
140+ return f ;
141+ }
142+
143+ public static bool operator false( BaseFilter a )
144+ {
145+ return false ;
146+ }
147+
148+ public static bool operator true( BaseFilter a )
149+ {
150+ return false ;
151+ }
152+
153+ private static void JoinShouldOnSide ( BaseFilter lbq , BaseFilter rbq , BoolBaseFilterDescriptor bq )
154+ {
155+ bq . _ShouldFilters = lbq . MergeShouldFilters ( rbq ) ;
156+ }
157+ }
158+ }
0 commit comments