"""This module defines the SQL data model for users.""" from sqlalchemy import Column, Integer, String, DateTime, Boolean from sqlalchemy.sql.functions import now from sqlalchemy.orm import relationship from todo.database.engine import Base class User(Base): """Model for the users table.""" __tablename__ = "users" id = Column('id', Integer, primary_key=True, autoincrement=True, index=True) email = Column('email', String, unique=True, nullable=False, index=True) password = Column('password', String, nullable=False) created = Column('created', DateTime(timezone=True), nullable=False, server_default=now()) updated = Column('updated', DateTime(timezone=True), nullable=False, server_default=now(), onupdate=now()) first_name = Column('first_name', String, nullable=False) last_name = Column('last_name', String, nullable=False, index=True) is_admin = Column('is_admin', Boolean, nullable=False, default=False, index=True) todo_items = relationship("TodoItem", back_populates="user", uselist=True, cascade="all, delete")