Spaces:
Runtime error
Runtime error
File size: 1,192 Bytes
dd1b74d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
"""User entity for authentication."""
from datetime import datetime
from sqlalchemy import Column, Integer, String, DateTime
from sqlalchemy.orm import relationship
from database import Base
class User(Base):
"""Registered user with authentication credentials."""
__tablename__ = "users_001_todo"
id = Column(Integer, primary_key=True, autoincrement=True)
email = Column(String(255), unique=True, index=True, nullable=False)
password_hash = Column(String(255), nullable=False) # bcrypt hash is ~60 chars
created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow, nullable=False)
# Relationship to todos - enables cascading deletes
todos = relationship("Todo", back_populates="user", cascade="all, delete-orphan")
def __repr__(self) -> str:
return f"<User(id={self.id}, email={self.email})>"
# For Pydantic serialization
def to_dict(self):
return {
"id": self.id,
"email": self.email,
"created_at": self.created_at.isoformat(),
"updated_at": self.updated_at.isoformat(),
}
|