EliteBot/elitebot/lib/python3.11/site-packages/sqlalchemy_utils/relationships/chained_join.py
2024-02-19 15:34:25 +01:00

31 lines
880 B
Python

def chained_join(*relationships):
"""
Return a chained Join object for given relationships.
"""
property_ = relationships[0].property
if property_.secondary is not None:
from_ = property_.secondary.join(
property_.mapper.class_.__table__,
property_.secondaryjoin
)
else:
from_ = property_.mapper.class_.__table__
for relationship in relationships[1:]:
prop = relationship.property
if prop.secondary is not None:
from_ = from_.join(
prop.secondary,
prop.primaryjoin
)
from_ = from_.join(
prop.mapper.class_,
prop.secondaryjoin
)
else:
from_ = from_.join(
prop.mapper.class_,
prop.primaryjoin
)
return from_