mapping.py 1.1 KB

123456789101112131415161718192021222324252627282930
  1. from sqlalchemy import Column, Integer, String, ForeignKey, UniqueConstraint, Boolean
  2. from sqlalchemy.orm import relationship
  3. from app.core.database import Base
  4. class AppUserMapping(Base):
  5. __tablename__ = "app_user_mappings"
  6. id = Column(Integer, primary_key=True, index=True)
  7. app_id = Column(Integer, ForeignKey("applications.id"), nullable=False)
  8. user_id = Column(Integer, ForeignKey("users.id"), nullable=False)
  9. # The username/email/id in the target application
  10. mapped_key = Column(String(100), nullable=True)
  11. # Optional email in the target application
  12. mapped_email = Column(String(100), nullable=True)
  13. # Status: True = Active, False = Disabled
  14. is_active = Column(Boolean, default=True, nullable=False)
  15. # Relationships
  16. application = relationship("Application")
  17. user = relationship("User")
  18. __table_args__ = (
  19. UniqueConstraint('app_id', 'user_id', name='uq_app_user'),
  20. UniqueConstraint('app_id', 'mapped_key', name='uq_app_mapped_key'),
  21. UniqueConstraint('app_id', 'mapped_email', name='uq_app_mapped_email'),
  22. )