Holy moley is it hard to do MUCK stuff relationally.

This commit is contained in:
Yaro Kasear 2025-09-04 14:36:00 -05:00
parent c72417e5e4
commit d9ed6d5cd7
8 changed files with 89 additions and 24 deletions

View file

@ -1,5 +1,5 @@
from sqlalchemy import Column, Integer, Boolean, String, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy.orm import relationship, foreign, remote
from crudkit.core.base import CRUDMixin
@ -15,12 +15,13 @@ class Player(Dbref):
block = Column(Integer, nullable=True)
password = Column(String, nullable=False)
home_id = Column(Integer, ForeignKey("dbref.id"), nullable=False)
home = relationship("Dbref", remote_side=[CRUDMixin.id], foreign_keys=[home_id])
home_id = Column(Integer, ForeignKey("dbref.id"), nullable=True)
home = relationship("Dbref", remote_side=[CRUDMixin.id], foreign_keys=[home_id], primaryjoin=lambda: foreign(Player.home_id) == remote(Dbref.id))
current_program_id = Column(Integer, ForeignKey("dbref.id"), nullable=True)
current_program = relationship("Dbref", remote_side=[CRUDMixin.id], foreign_keys=[current_program_id])
current_program = relationship("Dbref", remote_side=[CRUDMixin.id], foreign_keys=[current_program_id], primaryjoin=lambda: foreign(Player.current_program_id) == remote(Dbref.id))
__mapper_args__ = {
"polymorphic_identity": ObjectType.PLAYER
"polymorphic_identity": ObjectType.PLAYER,
"inherit_condition": id == Dbref.id
}