# services/auth/app/models/password_reset_tokens.py """ Password reset token model for authentication service """ import uuid from datetime import datetime, timezone from sqlalchemy import Column, String, DateTime, Boolean, Index from sqlalchemy.dialects.postgresql import UUID from shared.database.base import Base class PasswordResetToken(Base): """ Password reset token model Stores temporary tokens for password reset functionality """ __tablename__ = "password_reset_tokens" id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) user_id = Column(UUID(as_uuid=True), nullable=False, index=True) token = Column(String(255), nullable=False, unique=True, index=True) expires_at = Column(DateTime(timezone=True), nullable=False) is_used = Column(Boolean, default=False, nullable=False) created_at = Column(DateTime(timezone=True), default=lambda: datetime.now(timezone.utc)) used_at = Column(DateTime(timezone=True), nullable=True) # Add indexes for better performance __table_args__ = ( Index('ix_password_reset_tokens_user_id', 'user_id'), Index('ix_password_reset_tokens_token', 'token'), Index('ix_password_reset_tokens_expires_at', 'expires_at'), Index('ix_password_reset_tokens_is_used', 'is_used'), ) def __repr__(self): return f""