import enum from datetime import datetime from sqlalchemy import DateTime, Enum, ForeignKey, String from sqlalchemy.orm import Mapped, mapped_column, relationship from app.database import Base class TokenType(str, enum.Enum): activation = "activation" password_reset = "password_reset" class VerificationToken(Base): __tablename__ = "verification_tokens" id: Mapped[int] = mapped_column(primary_key=True, index=True) user_id: Mapped[int] = mapped_column(ForeignKey("users.id", ondelete="CASCADE")) code: Mapped[str] = mapped_column(String(10), index=True) token_type: Mapped[TokenType] = mapped_column(Enum(TokenType)) expires_at: Mapped[datetime] = mapped_column(DateTime) created_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow) user = relationship("User", back_populates="verification_tokens")