user.py 1.5 KB

123456789101112131415161718192021222324252627282930313233
  1. from sqlalchemy import Column, DateTime, ForeignKey, Integer, String, Text, text
  2. from sqlalchemy.dialects.postgresql import UUID
  3. from sqlalchemy.orm import relationship
  4. from sqlalchemy.sql import func
  5. from backend.app.db.base import Base
  6. class User(Base):
  7. __tablename__ = "users"
  8. id = Column(UUID(as_uuid=True), primary_key=True, server_default=text("gen_random_uuid()"))
  9. name = Column(String, nullable=False)
  10. account = Column(String, unique=True, nullable=False)
  11. phone = Column(String)
  12. title = Column(String)
  13. avatar = Column(Text)
  14. external_user_id = Column(String)
  15. tenant_id = Column(String)
  16. tenant_name = Column(String)
  17. hosp_id = Column(String)
  18. hosp_name = Column(String)
  19. role_id = Column(UUID(as_uuid=True), ForeignKey("roles.id", ondelete="RESTRICT"), nullable=False)
  20. campus_id = Column(UUID(as_uuid=True), ForeignKey("campuses.id", ondelete="SET NULL"))
  21. dept_id = Column(UUID(as_uuid=True), ForeignKey("departments.id", ondelete="SET NULL"))
  22. status = Column(String, nullable=False, server_default="active")
  23. password_hash = Column(String, nullable=False)
  24. token_version = Column(Integer, nullable=False, server_default="1")
  25. created_at = Column(DateTime(timezone=True), server_default=func.now(), nullable=False)
  26. updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now(), nullable=False)
  27. role = relationship("Role", lazy="joined")
  28. campus = relationship("Campus", lazy="joined")
  29. department = relationship("Department", lazy="joined")