user.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. """
  2. 用户模型
  3. """
  4. from sqlalchemy import Column, Integer, String, Boolean, DateTime, JSON
  5. from sqlalchemy.orm import relationship
  6. from sqlalchemy.sql import func
  7. from app.core.database import Base
  8. class User(Base):
  9. """用户表"""
  10. __tablename__ = "users"
  11. id = Column(Integer, primary_key=True, index=True)
  12. username = Column(String(50), unique=True, nullable=False, index=True)
  13. email = Column(String(100), unique=True, nullable=False, index=True)
  14. password_hash = Column(String(255), nullable=False)
  15. avatar_url = Column(String(500))
  16. # API Key配置(加密存储)
  17. encrypted_api_keys = Column(JSON, default={})
  18. # 国际化配置
  19. timezone = Column(String(50), default="UTC")
  20. preferred_language = Column(String(10), default="en")
  21. # 状态
  22. is_active = Column(Boolean, default=True)
  23. created_at = Column(DateTime(timezone=True), server_default=func.now())
  24. updated_at = Column(DateTime(timezone=True), onupdate=func.now())
  25. # 关系
  26. characters = relationship("Character", back_populates="user", cascade="all, delete-orphan")
  27. conversations = relationship("Conversation", back_populates="user", cascade="all, delete-orphan")