21 lines
802 B
Python
21 lines
802 B
Python
from sqlalchemy import Column, Integer, ForeignKey
|
|
from sqlalchemy.orm import relationship, foreign, remote
|
|
|
|
from crudkit.core.base import CRUDMixin
|
|
|
|
from muck.models.dbref import Dbref, ObjectType
|
|
|
|
class Exit(Dbref):
|
|
__tablename__ = "exits"
|
|
|
|
id = Column(Integer, ForeignKey("dbref.id"), primary_key=True)
|
|
|
|
destination_id = Column(Integer, ForeignKey("dbref.id"), nullable=True)
|
|
destination = relationship("Dbref", remote_side=[CRUDMixin.id], foreign_keys=[destination_id], primaryjoin=lambda: foreign(Exit.destination_id) == remote(Dbref.id))
|
|
|
|
source = relationship("Dbref", back_populates="exits", foreign_keys=[Dbref.location_id], remote_side=[Dbref.id])
|
|
|
|
__mapper_args__ = {
|
|
"polymorphic_identity": ObjectType.EXIT,
|
|
"inherit_condition": id == Dbref.id
|
|
}
|