@@ -276,6 +276,61 @@ def __deepcopy__(self, memo):
276
276
return self
277
277
278
278
279
+ class ExpressionFieldProperty (property ):
280
+ def __init__ (
281
+ self , original_property : property , expression_field : ExpressionField
282
+ ):
283
+ self ._original = original_property
284
+ self ._expression_field = expression_field
285
+ super ().__init__ (
286
+ original_property .fget ,
287
+ original_property .fset ,
288
+ original_property .fdel ,
289
+ original_property .__doc__ ,
290
+ )
291
+
292
+ def __getitem__ (self , item ):
293
+ return ExpressionField (f"{ self ._expression_field } .{ item } " )
294
+
295
+ def __getattr__ (self , item ):
296
+ return ExpressionField (f"{ self ._expression_field } .{ item } " )
297
+
298
+ def __hash__ (self ):
299
+ return hash (str (self ._expression_field ))
300
+
301
+ def __eq__ (self , other ):
302
+ if isinstance (other , ExpressionField ):
303
+ return super (ExpressionField , self ._expression_field ).__eq__ (other )
304
+ return Eq (field = self , other = other )
305
+
306
+ def __gt__ (self , other ):
307
+ return GT (field = self ._expression_field , other = other )
308
+
309
+ def __ge__ (self , other ):
310
+ return GTE (field = self ._expression_field , other = other )
311
+
312
+ def __lt__ (self , other ):
313
+ return LT (field = self ._expression_field , other = other )
314
+
315
+ def __le__ (self , other ):
316
+ return LTE (field = self ._expression_field , other = other )
317
+
318
+ def __ne__ (self , other ):
319
+ return NE (field = self ._expression_field , other = other )
320
+
321
+ def __pos__ (self ):
322
+ return self ._expression_field , SortDirection .ASCENDING
323
+
324
+ def __neg__ (self ):
325
+ return self ._expression_field , SortDirection .DESCENDING
326
+
327
+ def __copy__ (self ):
328
+ return self ._expression_field
329
+
330
+ def __deepcopy__ (self , memo ):
331
+ return self ._expression_field
332
+
333
+
279
334
class DeleteRules (str , Enum ):
280
335
DO_NOTHING = "DO_NOTHING"
281
336
DELETE_LINKS = "DELETE_LINKS"
0 commit comments