29
29
from ..query_utils import process_lhs
30
30
31
31
32
+ def base_expression (self , compiler , connection , as_path = False , ** extra ):
33
+ if as_path and hasattr (self , "as_mql_path" ) and getattr (self , "can_use_path" , False ):
34
+ return self .as_mql_path (compiler , connection , ** extra )
35
+
36
+ expr = self .as_mql_expr (compiler , connection , ** extra )
37
+ return {"$expr" : expr } if as_path else expr
38
+
39
+
32
40
def case (self , compiler , connection ):
33
41
case_parts = []
34
42
for case in self .cases :
35
43
case_mql = {}
36
44
try :
37
- case_mql ["case" ] = case .as_mql (compiler , connection , as_path = False )
45
+ case_mql ["case" ] = case .as_mql (compiler , connection )
38
46
except EmptyResultSet :
39
47
continue
40
48
except FullResultSet :
@@ -84,20 +92,20 @@ def col_pairs(self, compiler, connection, as_path=False):
84
92
return cols [0 ].as_mql (compiler , connection , as_path = as_path )
85
93
86
94
87
- def combined_expression (self , compiler , connection , as_path = False ):
95
+ def combined_expression (self , compiler , connection ):
88
96
expressions = [
89
- self .lhs .as_mql (compiler , connection , as_path = as_path ),
90
- self .rhs .as_mql (compiler , connection , as_path = as_path ),
97
+ self .lhs .as_mql (compiler , connection ),
98
+ self .rhs .as_mql (compiler , connection ),
91
99
]
92
100
return connection .ops .combine_expression (self .connector , expressions )
93
101
94
102
95
- def expression_wrapper_expr (self , compiler , connection ):
96
- return self .expression .as_mql (compiler , connection , as_path = False )
103
+ def expression_wrapper (self , compiler , connection ):
104
+ return self .expression .as_mql (compiler , connection )
97
105
98
106
99
- def negated_expression_expr (self , compiler , connection ):
100
- return {"$not" : expression_wrapper_expr (self , compiler , connection )}
107
+ def negated_expression (self , compiler , connection ):
108
+ return {"$not" : expression_wrapper (self , compiler , connection )}
101
109
102
110
103
111
def order_by (self , compiler , connection ):
@@ -172,10 +180,10 @@ def ref(self, compiler, connection, as_path=False): # noqa: ARG001
172
180
173
181
@property
174
182
def ref_is_simple_column (self ):
175
- return isinstance ( self .source , Col ) and self . source . alias is not None
183
+ return self .source . is_simple_column
176
184
177
185
178
- def star (self , compiler , connection , as_path = False ): # noqa: ARG001
186
+ def star (self , compiler , connection ): # noqa: ARG001
179
187
return {"$literal" : True }
180
188
181
189
@@ -190,11 +198,11 @@ def exists(self, compiler, connection, get_wrapping_pipeline=None):
190
198
lhs_mql = subquery (self , compiler , connection , get_wrapping_pipeline = get_wrapping_pipeline )
191
199
except EmptyResultSet :
192
200
return Value (False ).as_mql (compiler , connection )
193
- return connection .mongo_operators_expr ["isnull" ](lhs_mql , False )
201
+ return connection .mongo_expr_operators ["isnull" ](lhs_mql , False )
194
202
195
203
196
- def when (self , compiler , connection , as_path = False ):
197
- return self .condition .as_mql (compiler , connection , as_path = as_path )
204
+ def when (self , compiler , connection ):
205
+ return self .condition .as_mql (compiler , connection )
198
206
199
207
200
208
def value (self , compiler , connection , as_path = False ): # noqa: ARG001
@@ -221,18 +229,6 @@ def value(self, compiler, connection, as_path=False): # noqa: ARG001
221
229
return value
222
230
223
231
224
- def base_expression (self , compiler , connection , as_path = False , ** extra ):
225
- if (
226
- as_path
227
- and hasattr (self , "as_mql_path" )
228
- and getattr (self , "is_simple_expression" , lambda : False )()
229
- ):
230
- return self .as_mql_path (compiler , connection , ** extra )
231
-
232
- expr = self .as_mql_expr (compiler , connection , ** extra )
233
- return {"$expr" : expr } if as_path else expr
234
-
235
-
236
232
def register_expressions ():
237
233
BaseExpression .as_mql = base_expression
238
234
BaseExpression .is_simple_column = False
@@ -243,15 +239,15 @@ def register_expressions():
243
239
CombinedExpression .as_mql_expr = combined_expression
244
240
Exists .as_mql_expr = exists
245
241
ExpressionList .as_mql = process_lhs
246
- ExpressionWrapper .as_mql_expr = expression_wrapper_expr
247
- NegatedExpression .as_mql_expr = negated_expression_expr
242
+ ExpressionWrapper .as_mql_expr = expression_wrapper
243
+ NegatedExpression .as_mql_expr = negated_expression
248
244
OrderBy .as_mql_expr = order_by
249
245
Query .as_mql = query
250
246
RawSQL .as_mql = raw_sql
251
247
Ref .as_mql = ref
252
248
Ref .is_simple_column = ref_is_simple_column
253
249
ResolvedOuterRef .as_mql = ResolvedOuterRef .as_sql
254
- Star .as_mql = star
250
+ Star .as_mql_expr = star
255
251
Subquery .as_mql_expr = subquery
256
- When .as_mql = when
252
+ When .as_mql_expr = when
257
253
Value .as_mql = value
0 commit comments