@@ -312,3 +312,80 @@ class SelfRelationship(Base):
312312class ContainsTimestamp (Base ):
313313 id = Column (Integer , primary_key = True )
314314 timestamp = Column (DateTime (True ), nullable = False )
315+
316+
317+ class Alpha (Base ):
318+ __tablename__ = "alpha"
319+
320+ id = Column (Integer , primary_key = True , autoincrement = True )
321+ beta_id = Column (
322+ Integer ,
323+ ForeignKey ("beta.id" ),
324+ nullable = False ,
325+ index = True ,
326+ )
327+ beta = relationship ("Beta" , back_populates = "alphas" )
328+ gamma_id = Column (Integer , ForeignKey ("gamma.id" ), nullable = False )
329+ gamma : "Gamma" = relationship ("Gamma" )
330+
331+
332+ class BetaGammaBinding (Base ):
333+ __tablename__ = "beta_gamma_binding"
334+
335+ id : int = Column (Integer , primary_key = True )
336+ beta_id : int = Column (ForeignKey ("beta.id" , ondelete = "CASCADE" ), nullable = False )
337+ gamma_id : int = Column (ForeignKey ("gamma.id" , ondelete = "CASCADE" ), nullable = False )
338+
339+
340+ class Beta (Base ):
341+ __tablename__ = "beta"
342+
343+ id = Column (Integer , primary_key = True , autoincrement = True )
344+ gammas : List ["Gamma" ] = relationship (
345+ "Gamma" ,
346+ secondary = "beta_gamma_binding" ,
347+ back_populates = "betas" ,
348+ lazy = "noload" ,
349+ )
350+ alphas = relationship ("Alpha" )
351+ deltas : List ["Delta" ] = relationship (
352+ "Delta" ,
353+ secondary = "beta_delta_binding" ,
354+ lazy = "noload" ,
355+ )
356+
357+
358+ class Gamma (Base ):
359+ __tablename__ = "gamma"
360+
361+ id = Column (Integer , primary_key = True , autoincrement = True )
362+ betas : List ["Beta" ] = relationship (
363+ "Beta" ,
364+ secondary = "beta_gamma_binding" ,
365+ back_populates = "gammas" ,
366+ lazy = "raise" ,
367+ )
368+ delta_id : int = Column (
369+ Integer ,
370+ ForeignKey ("delta.id" , ondelete = "CASCADE" ),
371+ nullable = False ,
372+ index = True ,
373+ )
374+ alpha = relationship ("Alpha" )
375+ delta : "Delta" = relationship ("Delta" )
376+
377+
378+ class BetaDeltaBinding (Base ):
379+ __tablename__ = "beta_delta_binding"
380+
381+ id : int = Column (Integer , primary_key = True )
382+ beta_id : int = Column (ForeignKey ("beta.id" , ondelete = "CASCADE" ), nullable = False )
383+ delta_id : int = Column (ForeignKey ("delta.id" , ondelete = "CASCADE" ), nullable = False )
384+
385+
386+ class Delta (Base ):
387+ __tablename__ = "delta"
388+
389+ id = Column (Integer , primary_key = True , autoincrement = True )
390+ gammas : List ["Gamma" ] = relationship ("Gamma" , back_populates = "delta" , lazy = "noload" )
391+ betas : List ["Beta" ] = relationship ("Beta" , secondary = "beta_delta_binding" , back_populates = "deltas" , lazy = "noload" )
0 commit comments