user.py 947 B

123456789101112131415161718192021222324
  1. from typing import TYPE_CHECKING
  2. from sqlalchemy import Boolean, Column, Integer, String, ForeignKey
  3. from sqlalchemy.orm import relationship
  4. from app.db.base_class import Base
  5. if TYPE_CHECKING:
  6. from .item import Item # noqa: F401
  7. from .enum import Membership
  8. class User(Base):
  9. id = Column(Integer, primary_key=True, index=True)
  10. full_name = Column(String(20), index=True)
  11. email = Column(String(30), unique=True, index=True, nullable=False)
  12. hashed_password = Column(String(100), nullable=False)
  13. membership_status = Column(String(10),
  14. ForeignKey("membership.status", onupdate="CASCADE", ondelete="RESTRICT"),
  15. default="normal")
  16. available_time = Column(Integer, default=0)
  17. is_active = Column(Boolean(), default=True)
  18. is_superuser = Column(Boolean(), default=False)
  19. items = relationship("Item", back_populates="owner")
  20. videos = relationship("Video", back_populates="owner")