File tree Expand file tree Collapse file tree 1 file changed +14
-0
lines changed Expand file tree Collapse file tree 1 file changed +14
-0
lines changed Original file line number Diff line number Diff line change @@ -279,12 +279,26 @@ def to_expression(self, t):
279
279
elif isinstance (t , ast .NotExists ):
280
280
sub_stmt = self .prepare_select (t .query )
281
281
col = ~ sub_stmt .exists ()
282
+ elif isinstance (t , ast .Case ):
283
+ col = self .prepare_case (t )
282
284
else :
283
285
# some other complex object?
284
286
raise NotImplementedError (f'Column { t } ' )
285
287
286
288
return col
287
289
290
+ def prepare_case (self , t : ast .Case ):
291
+ conditions = []
292
+ for condition , result in t .rules :
293
+ conditions .append (
294
+ (self .to_expression (condition ), self .to_expression (result ))
295
+ )
296
+ else_ = None
297
+ if t .default is not None :
298
+ else_ = self .to_expression (t .default )
299
+
300
+ return sa .case (conditions , else_ = else_ )
301
+
288
302
def to_function (self , t ):
289
303
op = getattr (sa .func , t .op )
290
304
if t .from_arg is not None :
You can’t perform that action at this time.
0 commit comments