from sqlalchemy import Boolean, Column, String, Integer from sqlalchemy.orm import relationship import enum from app.db.base_class import Base class UserRole(str, enum.Enum): USER = "user" ADMIN = "admin" class User(Base): id = Column(Integer, primary_key=True, index=True) email = Column(String, unique=True, index=True, nullable=False) full_name = Column(String) hashed_password = Column(String, nullable=False) is_active = Column(Boolean, default=True) is_verified = Column(Boolean, default=False) is_kyc_verified = Column(Boolean, default=False) role = Column(String, default=UserRole.USER) two_factor_secret = Column(String, nullable=True) is_two_factor_enabled = Column(Boolean, default=False) # Relationships wallets = relationship("Wallet", back_populates="user", cascade="all, delete-orphan") deposits = relationship("Deposit", back_populates="user", cascade="all, delete-orphan") withdrawals = relationship("Withdrawal", back_populates="user", cascade="all, delete-orphan") transactions = relationship("Transaction", back_populates="user", cascade="all, delete-orphan") bot_purchases = relationship("BotPurchase", back_populates="user", cascade="all, delete-orphan") kyc = relationship("KYC", back_populates="user", uselist=False, cascade="all, delete-orphan")